3

コントロールを Gridview の TemplateFeilds の列として使用したいのですが、非表示にしないでください。各列の最後にボタンがあります。私の質問は、使用するコントロールと、Gridview でボタンをクリックした列の特定の行の値を取得する方法です。

4

4 に答える 4

3

コントロールが表示されず、要件を満たすため、のHiddenField列として使用する必要があります。GridViewコード ビハインドは、gridview の行コマンド内にあります。

   public  void gdView_RowCommand(object sender, GridViewCommandEventArgs e)
        {

            if (e.CommandName == "sendvalue")
            {

                for (int i = 0; i < gdView.Rows.Count; i++)
                {
                    int getrow = Convert.ToInt32(e.CommandArgument);

                    HiddenField HiddenField1 = (HiddenField)gdView.Rows[getrow].FindControl("HiddenField1");
}
}

e.CommandName == "sendvalue" は、Button の属性コマンド名が "sendvalue" に設定されているためです。

デザインの HiddenField は次のようになります

  <asp:HiddenField ID="HiddenField1" runat="server"/>
于 2013-01-04T08:55:04.143 に答える
3

取得したい値は何ですか?

ボタンのクリック イベントを処理し、sendertoButtonと it's NamingContainertoをキャストできますGridViewRow。次に、その行にある他のすべてのコントロールを見つけるために必要なものがすべて揃っています。

protected void Button1_Clicked(Object sender, EventArgs e)
{
    // get the button reference
    Button btn = (Button) sender;
    GridViewRow row = (GridViewRow) btn.NamingContainer;
    // assuming the primary key value is stored in a hiddenfield with ID="HiddenID"
    HiddenField hiddenID = (HiddenField) row.FindControl("HiddenID");
    int id = int.Parse(hiddenID.Value);
}

aspx (GridView の TemplateField)

<asp:Button ID="Button1" runat="server" Text="Click Me" OnClick="Button1_Clicked"/>
<asp:HiddenField ID="HiddenID" runat="server" Value='<%# Eval("PrimaryKeyField") %>'/>
于 2013-01-04T08:51:53.757 に答える
2

CommandArgumentクリックされるボタンのプロパティを、行データのバインド中に必要な値に設定することで、アプローチを変更できます。

于 2013-01-04T08:51:39.147 に答える