DevExpress Gridview中的行操作错误

本文关键字:操作 错误 Gridview DevExpress | 更新日期: 2023-09-27 18:10:01

我有一个DevExpress gridview,我将datasource从代码后面(c#)绑定到它。我的行动工作正常,但当我使用rowfilter它不。

我认为我的命令参数,发送信息给我的datasource是错误的。

我在第1行中的id是1,我在第13行中的id应该是13,但在rowfilter行之后,单击第13行上的按钮(行命令),我发送到代码后面的id(命令参数)是1 !

我如何从一行(GridView Devexpress)获得ID ?

我的显示数据表格:

<dx:ASPxGridView ID="gv" runat="server" AutoGenerateColumns="False" OnRowCommand="gv_RowCommand"  OnDataBinding="gv_DataBinding"          
        ClientInstanceName="gv" KeyFieldName="Id"
        Width="100%">
        <Columns>
            <dx:GridViewDataTextColumn Caption="" CellStyle-HorizontalAlign="Center" VisibleIndex="0" Width="12%">
                <DataItemTemplate>
                    <asp:LinkButton ID="btnconfirm" Text="Print" Width="70px" CssClass="btn btn-primary btn-small" ForeColor="#cc0000" CommandArgument='<%# Eval("Id") %>'
                        CommandName="print" runat="server"
                        OnClientClick="return confirm('Print?');"> 
                    </asp:LinkButton>
                </DataItemTemplate>
                <HeaderStyle HorizontalAlign="center" />
            </dx:GridViewDataTextColumn>
        </Columns>
        <SettingsPager PageSize="80">
        </SettingsPager>
        <Settings ShowFilterRow="true" />
    </dx:ASPxGridView>
我的绑定代码:

     protected void Page_Load(object sender, EventArgs e)
      {
        if (!IsPostBack)
        {
            refreshGrid();
            gv.DataBind();
        }
    }

  protected void gv_DataBinding(object sender, EventArgs e)
    {
        refreshGrid();
    }

  protected void gv_RowCommand(object sender,     DevExpress.Web.ASPxGridView.ASPxGridViewRowCommandEventArgs e)
    {
        if (e.CommandArgs.CommandName == "print")
        {
          String _ID = e.CommandArgs.CommandArgument.ToString();
        }
    }
       private void refreshGrid()
        {
        DataClasses1DataContext m = new DataClasses1DataContext();
          var  q = from p in m.TblUserElectronics.AsQueryable()
                from w in m.ViewPersonCarRelations
                where p.CID == w.CarId
                select new
                {
                    p.Id,
                    p.Enabled,
                    CodeTaxi = w.Code_Taxi
                };
        gv.DataSource = q;
    }

DevExpress Gridview中的行操作错误

Javascript函数:

 function gv_CustomButton_Click(s, e) {
            switch (e.buttonID) {
                case "cmdPrint":
                    if (confirm("Print?")) {
                        s.GetRowValues(e.visibleIndex, 'ID', PrintCommand);
                    }
            }
        }
        function PrintCommand(values) {
            var ID = values; //this will give u actual ID.
            //put your actions here
        }

修改Devexpress GridView:

  <dx:ASPxGridView ID="gv" runat="server" AutoGenerateColumns="False" OnRowCommand="gv_RowCommand"  OnDataBinding="gv_DataBinding"          
    ClientInstanceName="gv" KeyFieldName="Id" Width="100%">
    <ClientSideEvents CustomButtonClick="gv_CustomButton_Click" />
    <Columns>
    <dx:GridViewCommandColumn VisibleIndex="0" ButtonType="Image" Width="12%" Caption="Actions" CellStyle-VerticalAlign="Top" Visible="false" ShowInCustomizationForm="true">
    <CustomButtons>
                <dx:GridViewCommandColumnCustomButton ID="cmdPrint" Image-ToolTip="Print" CssClass="btn btn-primary btn-small">                        
               </dx:GridViewCommandColumnCustomButton>                                     
    </CustomButtons>
    <HeaderStyle HorizontalAlign="center" />
    </dx:GridViewCommandColumn>    
    </Columns>   
    <SettingsPager PageSize="80">
    </SettingsPager>
    <Settings ShowFilterRow="true" />
    </dx:ASPxGridView>