我正在使用devexpress 9.1。
我有devexpress gridview绑定到数据源。已设置页面大小=“20”。 已启用设置ShowFilterRow =“true”;
我有一个带有asp图像按钮的列,将其命令参数设置为值。
以下是代码
<dxwgv:ASPxGridView ID="ASPxGridView2" runat="server" DataSourceID="sds_addingredients"
AutoGenerateColumns="False" KeyFieldName="Ingredients_Id" ClientInstanceName="grid2">
<Settings ShowFilterRow="true" />
<SettingsPager PageSize="20"></SettingsPager>
<Columns>
<dxwgv:GridViewDataTextColumn Caption="S.No" VisibleIndex="0" >
<DataItemTemplate>
<%#Container.ItemIndex +1 %>
</DataItemTemplate>
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataTextColumn VisibleIndex="1" Caption=" ">
<DataItemTemplate>
<asp:ImageButton ID="btn_edit" runat="server" CommandArgument='<%# Eval("Ingredients_Id") %>' Height="15px"
ImageUrl="~/images/document_edit.png" ToolTip="Edit"
Width="15px" />
</DataItemTemplate>
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataTextColumn VisibleIndex="1" FieldName="Ingredients_Id"
ReadOnly="True" Visible="False">
<EditFormSettings Visible="False" />
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataTextColumn Caption="Ingredient" FieldName="Ingredients_Name" VisibleIndex="2" Settings-ShowFilterRowMenu="True" >
</dxwgv:GridViewDataTextColumn>
</Columns>
下面显示服务器端代码
protected void ASPxGridView2_RowCommand(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewRowCommandEventArgs e)
{ string id = e.CommandArgs.CommandArgument.ToString();//perform certain opertation based on the id}
上述方法正常工作但是当我过滤结果并单击某一行时,服务器端收到的ID 似乎与我点击的内容不对应。我觉得它得到错误的行索引... 只有当我尝试过滤并执行行命令单击时才会发生这种情况。 其他方面它正常工作。为什么会这样。
答案 0 :(得分:0)
您是否尝试过使用KeyValue属性?
protected void ASPxGridView2_RowCommand(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewRowCommandEventArgs e)
{
int id = Convert.ToInt32(e.KeyValue);
//perform certain opertation based on the id
}