【问题标题】:Grid View Button Passing Data Via On Click网格视图按钮通过单击传递数据
【发布时间】:2014-07-15 03:16:40
【问题描述】:

我对 C# 和 asp.net 还很陌生,如果这是一个非常愚蠢的问题,我深表歉意。

我正在使用网格视图来显示数据库中的许多记录。

每一行都有一个编辑按钮。单击按钮时,我希望将 ID 传递回 .cs 文件中的函数。如何将 rowID 绑定到 Button 字段?

我已经厌倦了使用超链接,但这似乎不起作用,因为我要回发到 URL 上已经有 Permanter 的同一页面。

asp.net

<asp:GridView ID="gvAddresses" runat="server" onrowcommand="Edit_Row">
    <Columns>
        <asp:ButtonField runat="server" ButtonType="Button" Text="Edit">
    </Columns>
</asp:GridView>

c#

        int ImplantID = Convert.ToInt32(Request.QueryString["ImplantID"]);
        Session.Add("ImplantID", ImplantID);

        List<GetImplantDetails> DataObject = ImplantDetails(ImplantID);

        System.Data.DataSet DSImplant = new DataSet();
        System.Data.DataTable DTImplant = new DataTable("Implant");

        DSImplant.Tables.Add(DTImplant);

        DataColumn ColPostCode = new DataColumn();
        ColPostCode.ColumnName = "PostCode";
        ColPostCode.DataType = typeof(string);
        DTImplant.Columns.Add(ColPostCode);

        DataColumn ColConsigneeName = new DataColumn();
        ColConsigneeName.ColumnName = "Consignee Name";
        ColConsigneeName.DataType = typeof(string);
        DTImplant.Columns.Add(ColConsigneeName);

        DataColumn ColIsPrimaryAddress = new DataColumn();
        ColIsPrimaryAddress.ColumnName = "Primary";
        ColIsPrimaryAddress.DataType = typeof(int);
        DTImplant.Columns.Add(ColIsPrimaryAddress);

        DataColumn ColImplantCustomerDetailsID = new DataColumn();
        ColImplantCustomerDetailsID.ColumnName = "Implant ID";
        ColImplantCustomerDetailsID.DataType = typeof(int);
        DTImplant.Columns.Add(ColImplantCustomerDetailsID); 

        foreach (GetImplantDetails Object in DataObject)
        {

            DataRow DRImplant = DTImplant.NewRow();
            DRImplant["PostCode"] = Object.GetPostCode();
            DRImplant["Consignee Name"] = Object.GetConsigneeName();
            DRImplant["Primary"] = Object.GetIsPrimaryAddress();
            DRImplant["Implant ID"] = Object.GeTImplantCustomerDetailsID();
            DTImplant.Rows.Add(DRImplant); <--- this is what I need to be added to the button

        }

        gvAddresses.DataSource = DTImplant;
        gvAddresses.DataBind(); 

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    在您的 Edit_Row 方法中,您可以访问您正在编辑的行的索引,如下所示:

    int rowIndex = (int)e.CommandArgument;
    

    一旦你有了它,你就可以直接访问该行并提取你想要的任何值:

    GridViewRow row = gvTest.Rows[rowIndex];
    int implantId = Int32.Parse(string row.Cells[3].Text);
    

    或者,您也可以将属性 DataKeyNames="Implant ID" 添加到您的 GridView 并以这种方式访问​​ id:

    int implantId = Int32.Parse(gvTest.DataKeys[rowIndex]["Implant ID"].ToString());
    

    【讨论】:

    • 谢谢!抱歉,我不确定我是否正确解释了问题。那或者我只是不完全理解你的遮阳篷。 ImplantID 是数据库中的一个字段。所以我想把它从数据库中拉出来(我可以这样做),然后将它附加到按钮上,这样当触发 Onclick 时,我就知道需要编辑哪条记录。
    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 2018-01-17
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多