从gridview中的选定行显示外部文本框中的数据

时间:2012-08-26 01:13:37

标签: asp.net

我正在使用模板字段创建网格视图。我在网格视图中使用模板字段插入了一个链接按钮。 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;
    }
}

有谁能告诉我怎么做。

2 个答案:

答案 0 :(得分: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;
}}

答案 1 :(得分:0)

尝试它的方式并非不可能,但是对于每一行使用内置的选择按钮可能更容易。这样你就可以使用gridview的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;
}