0

テンプレート フィールドを使用してグリッド ビューを作成しています。グリッド ビューにテンプレート フィールドを使用してリンク ボタンを挿入しました。GridViewの外に4つのテキストボックスがあります..リンクボタンのクリックで行を選択し、選択した行のデータをテキストボックスに入れたいです。これにも行コマンドを使用していますが、機能していません...使用している構文は.:

<asp:GridView ID="gview" AutoGenerateColumns="False" runat="server" CellPadding="4" 
        ForeColor="#333333" GridLines="None" onrowcommand="gview_RowCommand">
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:TemplateField HeaderText="Book Name">
<ItemTemplate>
<%#Eval("book_name") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Book Author">
<ItemTemplate>
<%#Eval("book_author") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Book Publisher">
<ItemTemplate>
<%#Eval("book_Publisher") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Book Price">
<ItemTemplate>
<%#Eval("book_Price") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Update">
<ItemTemplate>


<asp:LinkButton ID="lnkDet" CommandName="cmdBind" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"  runat="server" CausesValidation="false">View Details</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>   

</Columns>

およびコード ビハインド ファイル:

protected void gview_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "cmdBind")
    {
        LinkButton lb = (LinkButton)e.CommandSource;
        int index = Convert.ToInt32(lb.CommandArgument);


        //Bind values in the text box of the pop up control
        txt_name.Text = gview.Rows[index].Cells[0].Text;
        txt_author.Text = gview.Rows[index].Cells[1].Text;
        txt_price.Text = gview.Rows[index].Cells[2].Text;
    }
}

誰でもこれを行う方法を教えてもらえますか。

4

2 に答える 2

3

私はこれがうまくいくと思います:

protected void gview_RowCommand(object sender, GridViewCommandEventArgs e){
if (e.CommandName == "cmdBind")
{

    int index = Convert.ToInt32(e.CommandArgument);


    //Bind values in the text box of the pop up control
    txt_name.Text = gview.Rows[index].Cells[0].Text;
    txt_author.Text = gview.Rows[index].Cells[1].Text;
    txt_price.Text = gview.Rows[index].Cells[2].Text;
}}
于 2012-11-09T11:18:41.410 に答える
0

あなたのやり方でそれを試みることは不可能ではありませんが、各行に組み込まれている選択ボタンを使用する方が簡単かもしれません. そうすれば、グリッドビューの SelectedIndexChanged イベントを使用できます。

protected void gview_SelectedIndexChanged(object sender, EventArgs e)
{
    txt_name.Text = gview.SelectedRow.Cells[0].Text;
    txt_author.Text = gview.SelectedRow.Cells[1].Text;
    txt_price.Text = gview.SelectedRow.Cells[2].Text;
}
于 2013-11-18T10:45:16.420 に答える