1

ユーザーを含む GridView があり、ユーザー名を含む行の最初の列を選択できるようにしたいと考えています。プロパティでそれを行う方法は知っていautogenerateselectbuttonますが、私のデザインではうまく見えません。代わりに、選択ボタンなしで作成したいと思います。これが私がこれまでに持っているものです:

<asp:GridView ID="GridView5" AllowPaging="true" GridLines="None" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle="alt" runat="server" AllowSorting="True"
                            AutoGenerateColumns="False"
                            Width="750px"
                            CausesValidation="False" OnPageIndexChanging="gridView5_PageIndexChanging"  OnSelectedIndexChanged="gridView5_SelectedIndexChanged" autogenerateselectbutton="True" >
                            <Columns>
                                <asp:BoundField DataField="username" HeaderText="Username" ReadOnly="True" />
                                <asp:BoundField DataField="name" HeaderText="Name" />
                                <asp:BoundField DataField="lastname" HeaderText="Last name" />
                            </Columns>
                            <selectedrowstyle backcolor="LightCyan"
     forecolor="DarkBlue"
     font-bold="true"/>  </asp:GridView>

を削除するautogenerateselectbuttonと、行をクリックしても何も起こりません。

このセルから値を取得して文字列に格納setUser()し、セル値をパラメーターとして関数を呼び出します。

protected void gridView5_SelectedIndexChanged(Object sender, EventArgs e)
{
    GridViewRow row = GridView5.SelectedRow;
    string user = row.Cells[1].Text.ToString();
    setSelectedUser(user);
}

問題は、aspx私が作成したファイルにあると思いますが、trueGridViewに設定せずに行を選択可能にする方法がわかりません。autogenerateselectbutton

4

5 に答える 5

2

RowCommandメソッドを使用する場合は、asp:ButtonField列を作成し、コマンド名を設定できます。

   protected void GridView1_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
   {
        if (e.CommandName=="MyCommand")
        {    
             int row = int.Parse(e.CommandArgument.ToString());
             var cellText= gvOwner.Rows[row].Cells[1].Text.Trim();
        }
   }
于 2012-12-10T13:44:38.157 に答える
1

ユーザーが操作を行う特定の行の選択されたインデックス値を取得する場合は、rowindex 値を取得する必要があります。ラベル コントロールから値を取得する場合は、"

Label l=(Label)Gridviewname.rows[e.rowindex].Findcontrol("label name of which you want to get the data")
String s=l.Text;
setselecteduser(l);

TextFiled から値を取得する場合

TextField t=(TextField)GridviewName.rows[e.rowindex].FindControl("Textbox Id of which you    want to get the data")
String s=t.Text;
SetSelecteduser(t);
于 2012-12-10T13:49:59.643 に答える
0

大丈夫そうですが、あなたのページは select 後にポストバックしますか? if(!ispostback) でポストバック コントロールを確認しますか。ページがポストバックされている場合、グリッドビューも同様に、grv が空になることを意味するためです。データソースとデータバインド行でポストバック コントロールを使用している空の grv からデータを取得するにはどうすればよいですか...

于 2012-12-10T13:46:44.897 に答える
0

テキストを選択し、コマンド名を「選択」としてリンクボタンを配置し、コマンド引数として「ユーザー名」を渡します。

<asp:LinkButton runat="server" ID="lnkStatus" CommandName="Select" 
                             CommandArgument='<%# Eval("username") %>' Text='Select' />

RowCommand イベントを起動します:- 引数からユーザー名を取得します。グリッドから取得する必要はありません。

于 2012-12-10T13:47:52.087 に答える