启用筛选时Devexpress Gridview Row命令错误

时间:2011-08-26 05:29:02

标签: asp.net devexpress

我正在使用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 似乎与我点击的内容不对应。我觉得它得到错误的行索引... 只有当我尝试过滤并执行行命令单击时才会发生这种情况。 其他方面它正常工作。为什么会这样。

1 个答案:

答案 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
    }