-1

次のようにグリッドにデータを表示しています。

開始日終了日ボタン

2013年3月16日2013年3月17日サインアップ--->これはASPボタンです

2013年3月18日2012年3月19日サインアップ---->これはASPボタンです

2012年3月20日2012年3月20日サインアップ---->これはASPボタンです

最初の行のサインアップボタンをクリックしたときにc#コードを含むasp.netが必要なのですが、最初の行のデータを取得したいのです。2番目の行をクリックすると、2番目の行の開始日と終了時刻のデータのみが必要になります。どうすればこれを達成できますか?この点で私をヘプしてください。

4

1 に答える 1

0

aspボタンで、プロパティを設定します。CommandName = "SignUp" CommandArgument ='<%#Container.DataItemIndex%>'

これで、このボタンをクリックすると、GridviewのRowCommandイベントが呼び出されます。

その場合、e.CommandArgumentには行番号が含まれます。

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

これで、gvr.Cells [列番号]を使用して特定のテキストを取得するか(非推奨)、findcontrolを使用して開始/終了日のラベルまたはリテラルを取得できます(テンプレートフィールドを使用している場合)。以下のサンプルコード

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>
于 2013-03-19T20:29:04.530 に答える