我有下面的telerik网格,需要将嵌套表中的数据值传递到ItemCommand中,所以当用户单击网格按钮时,代码就会执行,我就不知道该怎么做了
<telerik:RadGrid ID="grdRegions" runat="server" Skin="Metro" AllowCustomSorting="True"
ShowHeader="True" PageSize="10" ShowGroupPanel="False" OnItemCommand="grdRegions_ItemCommand"
ShowStatusBar="True" AutoGenerateColumns="False"
AllowSorting="True" AllowPaging="True" DataSourceID="RegionDS" Width="500px">
<PagerStyle Mode="Slider" />
<MasterTableView DataSourceID="RegionDS" DataKeyNames="RegionCode" AllowMultiColumnSorting="True" Width="100%">
<DetailTables>
<telerik:GridTableView runat="server" DataKeyNames="RegionCode,DealerId" DataSourceID="DealerDS" AllowFilteringByColumn="True" >
<ParentTableRelation>
<telerik:GridRelationFields DetailKeyField="RegionCode" MasterKeyField="RegionCode" />
</ParentTableRelation>
<Columns>
<telerik:GridBoundColumn SortExpression="DealerId" HeaderText="Dealer" HeaderButtonType="TextButton"
DataField="Dealer" UniqueName="DealerId">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="RegionCode" HeaderText="FDAF Region Code" HeaderButtonType="TextButton"
DataField="RegionCode" UniqueName="RegionCode" AllowFiltering="False">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="DealerId" HeaderText="DealerId" HeaderButtonType="TextButton"
DataField="DealerId" UniqueName="Dealer">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn ItemStyle-Width="22px" AllowFiltering="false">
<ItemTemplate>
<asp:ImageButton ID="EditDealer" runat="server" AlternateText="Edit Dealer" ToolTip="Edit Dealer"
ImageUrl="Images/edit.png" CommandArgument='<%# DataBinder.Eval(Container,"DataItem.DealerId")%>'
CommandName="EditDealer" CausesValidation="false" />
</ItemTemplate>
<ItemStyle Width="22px"></ItemStyle>
</telerik:GridTemplateColumn>
</Columns>
</telerik:GridTableView>
</DetailTables>
<Columns>
<telerik:GridBoundColumn SortExpression="RegionName" HeaderText="FDAF Region" HeaderButtonType="TextButton"
DataField="RegionName" UniqueName="RegionName" AllowFiltering="False">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="RegionCode" HeaderText="FDAF Region Code" HeaderButtonType="TextButton"
DataField="RegionCode" UniqueName="RegionCode">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="RegionDealerCount" HeaderText="Dealers In Region" HeaderButtonType="TextButton"
DataField="RegionDealerCount" UniqueName="RegionDealerCount" AllowFiltering="False">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
protected void grdRegions_ItemCommand(object sender, GridCommandEventArgs e)
{
objDealerDL.DealerId = Convert.ToInt32((e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["DealerId"].ToString());
GridDataItem item = (GridDataItem)e.Item;
if (e.CommandName == "EditDealer")
{
try
{
do work
}
catch (Exception ex)
{
}
}
}发布于 2013-05-02 07:00:14
您可以使用ItemDataBound方法。
在此方法中,您只需按名称搜索控件并设置它的命令参数。
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
// this is the grids current rows item data
GridDataItem item = (GridDataItem)e.Item;
// This next line finds the image button control from within the grid cell
ImageButton btn = (ImageButton )item["ColumnNameHere"].FindControl("EditDealer");
// Cast the data item back to the type of item that you passed in as a datasource
YourDataItemType val = (YourDataItemType) item.DataItem;
// now set your command argument
btn.CommandArgument = val.ChildValue;
}
} 当我说将数据项转换回您作为数据源传入的项的类型时
您的数据源是RegionDS。
例如,如果您的RegionDS是一个区域列表,即
List<Region>你的演员阵容是:
Region val = (Region) item.DataItem;
即来自更大集合的单个对象
在数据表的情况下,您可以用DataRowView替换Region。
由于您没有说明您正在使用什么作为数据源,因此很难提供任何进一步的信息。
https://stackoverflow.com/questions/16327344
复制相似问题