单击同一行中的按钮时如何读取行的数据

时间:2013-03-19 19:55:29

标签: asp.net datagridview

我在网格中显示的数据如下:

StartDate Enddate Button

16/3/2013 17/3/2013注册--->这是一个ASP按钮

18/3/2013 19/3/2012注册---->这是一个ASP按钮

20/3/2012 20/3/2012注册---->这是一个ASP按钮

当我点击第一行注册按钮时,我想要带有c#代码的asp.net我想获取第一行的数据。如果单击第二行,我只想要第二行的开始日期和结束时间的数据。我怎么能做到这一点?请相信我。

1 个答案:

答案 0 :(得分:0)

在asp按钮中,设置属性:CommandName =" SignUp" CommandArgument ='<%#Container.DataItemIndex%>'

现在,当点击此按钮时,它会调用Gridview的RowCommand事件

在那种情况下,e.CommandArgument包含您的行号。

GridViewRow gvr = gvLinkImages.Rows [e.CommandArgument];

现在您可以使用gvr.Cells [列号]来获取特定文本(不推荐) 或使用findcontrol获取开始/结束日期的标签或文字(假设您使用的是Templatefields) 下面的示例代码

<强> C#

protected void gvResults_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "SignUp") 
     {
    int rwNumber = Convert.ToInt32(e.CommandArgument);
    GridViewRow gvr = gvResults.Rows(rwNumber);

    System.DateTime rowStartDate = default(System.DateTime);
    System.DateTime rowEndDate = default(System.DateTime);

    //If you are using Templatefields
    Literal lblRowStartDate = gvr.FindControl("lblStartDate") as Literal;
    Literal lblRowEndDate = gvr.FindControl("lblEndDate") as Literal;
    rowStartDate = Convert.ToDateTime(lblRowStartDate.Text);
    rowEndDate = Convert.ToDateTime(lblRowEndDate.Text);

    //Incase you are not using TemplateFields or Autobinding your grid
    rowStartDate = Convert.ToDateTime(gvr.Cells[0].Text);
    rowEndDate = Convert.ToDateTime(gvr.Cells[1].Text);

}
}

<强> ASPX

    <asp:GridView runat="server" ID="gvResults" AutoGenerateColumns="false" OnRowCommand="gvResults_RowCommand">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Literal runat="server" ID="lblStartDate" Text='<%#Container.DataItem.StartDate%>'></asp:Literal>

            </ItemTemplate>

        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Literal runat="server" ID="lblStartDate" Text='<%#Container.DataItem.EndDate%>'></asp:Literal>

            </ItemTemplate>

        </asp:TemplateField>
          <asp:TemplateField>
            <ItemTemplate>
                <asp:Button runat="server" ID="btnSignUp" CommandName="SignUp" CommandArgument="<%# Container.DataItemIndex %>"  />

            </ItemTemplate>

        </asp:TemplateField>
    </Columns>

</asp:GridView>