从 gv_RowCommand 传递索引

Passing index from gv_RowCommand

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["EMConStr"].ConnectionString);
    conn.Open();
    if (e.CommandName == "AddToCart")
    {
        int index = Convert.ToInt32(e.CommandArgument);
        //how to pass this index to "protected void Save(object sender, EventArgs e)"?
    }
    conn.Close();
}

protected void Save(object sender, EventArgs e)
{ 
    //label1.text = index
}

.aspx 如下

            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Button ID="AddButton" runat="server" 
                    CommandName="AddToCart" 
                    CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
                    Text="Add to Cart"/>
                </ItemTemplate> 
            </asp:TemplateField>
            <asp:ButtonField ButtonType="Button" CommandName="Select" Text="Start"/>
            <asp:BoundField DataField="DocNum" HeaderText="DocNum" SortExpression="DocNum" />
            <asp:BoundField DataField="ItemName" HeaderText="ItemName" SortExpression="ItemName"/>             
        </Columns>

我使用 ModalPopupExtender

    <asp:Panel ID="pnlAddEdit" runat="server" CssClass="modalPopup" style = "display:none">
        <asp:Label Font-Bold = "true" ID = "Label2" runat = "server" Text = "Please Enter Completed Quantity:" ></asp:Label>
            <br />
            <table>
            <tr>
            <td colspan="2">
            <asp:TextBox ID="txtMcCompletedQty" Width = "225px" MaxLength = "7" runat="server"></asp:TextBox>
            </td>
            </tr>
            <tr>
            <td>
            <asp:Button ID="btnSave" runat="server" Text="Save" OnClick = "Save" Width = "113px"/>
            </td>
            <td>
            <asp:Button ID="btnCancel" runat="server" Text="Cancel" OnClientClick = "return Hidepopup()" Width = "112px"/>
            </td>
            </tr>
            </table>
    </asp:Panel>
    <asp:LinkButton ID="lnkFake" runat="server"></asp:LinkButton>
    <asp:ModalPopupExtender ID="popup" runat="server" DropShadow="false" PopupControlID="pnlAddEdit" TargetControlID = "lnkFake" BackgroundCssClass="modalBackground"></asp:ModalPopupExtender>

你好,我是 Asp.Net C# 的新手。我可以知道如何将索引值从 GridView1_RowCommand 传递给 Save 函数吗?我尝试了 Save(int index, object sender, EventArgs e) 但没有成功。

保存按钮功能实际上嵌入在弹出窗口中 window。 所以当调用保存函数时,它应该将数量保存到选定的 gridview 的行中。这就是为什么我必须从 RowCommand 获取索引。

你可以使用 BindingSource class 实例来存储索引值,你可以在你的任何方法中使用它 class.It 对我来说工作正常

private BindingSource indexBind = new BindingSource();

protected void GridView1_RowCommand
(object sender, GridViewCommandEventArgs e)
{
  SqlConnection conn = new 
  SqlConnection(ConfigurationManager.ConnectionStrings["EMConStr"].
  ConnectionString);
    conn.Open();
    if (e.CommandName == "AddToCart")
    {
        int index = Convert.ToInt32(e.CommandArgument);
        indexBind.DataSource = index;
        //how to pass this index to "protected void Save(object sender, //EventArgs e)"?
    }
    conn.Close();
 }

protected void Save(object sender, EventArgs e)
{ 
     int index = 
     Convert.ToInt32(indexBind.DataSource);
    //label1.text = index
}

看看 this thread

GridViewRow gvr = (GridViewRow)(((Button)e.CommandSource).NamingContainer);

int RowIndex = gvr.RowIndex;