【问题标题】:Display GridView selected row data in TextBox在 TextBox 中显示 GridView 选定的行数据
【发布时间】:2014-09-17 18:58:38
【问题描述】:

这里我有一个GridView,它显示了书籍的详细信息:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowPaging="true" BackColor="White"
                BorderColor="#CCCCCC" BorderWidth="2px" CellPadding="2" CellSpacing="5" ForeColor="#000066"
                GridLines="None" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
                <RowStyle BackColor="#F7F7F7" />
                <AlternatingRowStyle BackColor="#E7E7FF" />
                <FooterStyle BackColor="White" />
                <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="White" ForeColor="#000066"
                    HorizontalAlign="Center" />
                <SortedAscendingCellStyle BackColor="#F1F1F1" />
                <SortedAscendingHeaderStyle BackColor="#007DBB" />
                <SortedDescendingCellStyle BackColor="#CAC9C9" />
                <SortedDescendingHeaderStyle BackColor="#00547E" />
                <Columns>

                    <asp:CommandField ShowSelectButton="true" ControlStyle-ForeColor="Red" SelectText="Select" HeaderText="Select" />

                    <asp:TemplateField HeaderText="Id">
                        <ItemTemplate>
                            <asp:Label ID="LabelId" runat="server" Text='<%# Bind("Id") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Title">
                        <ItemTemplate>
                            <asp:Label ID="LabelTitle" runat="server" Text='<%# Bind("Title") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>

                 </Columns>
</asp:GridView>

现在,如果我想编辑书籍详细信息,还有文本框,所以当我单击 Select (ShowSelectButton="true") 时,列值应填充到文本框中。

我在GridView1_SelectedIndexChanged 事件中尝试过这样的操作,但是当我点击选择时没有任何反应:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    textBoxID.Text = GridView1.SelectedRow.Cells[0].Text;
    textBoxTitle.Text = GridView1.SelectedRow.Cells[1].Text;
}

【问题讨论】:

  • 事件会触发吗?
  • 是的,当我点击Select时页面会重新加载。
  • 我认为您希望标签数据在使用单击选择时应显示在相应的文本框中
  • 你的 textBoxID 和 textBoxTitle 在哪里

标签: c# asp.net gridview


【解决方案1】:

你需要投射Labels的行。

void GridView1_SelectedIndexChanged(Object sender, EventArgs e)
{    
    // Get the currently selected row using the SelectedRow property.
    GridViewRow row = gridview1.SelectedRow;

    //now get the labels
    Label _LabelId = row.FindControl("LabelId") as Label;
    Label _LabelTitle = row.FindControl("LabelTitle") as Label;

    //get the values from labels and assign them to textboxes
    textBoxID.Text = _LabelId.Text;
    textBoxTitle.Text = _LabelTitle.Text;    
}

【讨论】:

  • 谢谢!现在它可以工作了,但这很有效,因为在这里我只显示了两个文本框,而在 GridView 我有 11 或 12 个文本框。
  • 很抱歉,我无法回答您的问题
【解决方案2】:
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
     TextBoxUserID.Text = GridView1.SelectedRow.Cells[1].Text;
     TextBoxUserName.Text = GridView1.SelectedRow.Cells[2].Text;
}

【讨论】:

    【解决方案3】:

    您好,您无法获取该值,因为您正在使用 ItemTemplateField 将其更改为 BoundField。您也可以在 GridView 中将 DateKeyNames 与该事件 SelectedIndexChanged 一起使用

    【讨论】:

      【解决方案4】:

      GridView1_SelectedIndexChanged事件中

      GridViewRow gvRow = GridView1.SelectedRow;      
      if(gvRow != null)
                 {
                    Label lblId = gvRow.FindControl("LabelId") as Label;
                    Label lblTitle = gvRow.FindControl("LabelTitle") as Label;
                    if(lblId != null && lblTitle != null)
                    {
                       textBoxID.Text = lblId.Text;
                        textBoxTitle.Text = lblTitle.Text;
                     }
                  }
      

      【讨论】:

      • 将得到错误`'GridView1_SelectedIndexChanged'没有重载匹配委托'System.EventHandler'`
      • @Ganesh,我的意思是在 GridView1_SelectedIndexChanged 事件中
      • 将得到错误`'GridView1_SelectedIndexChanged'没有重载匹配委托'System.EventHandler'`
      • 来自 MSDN void CustomersGridView_SelectedIndexChanged(Object sender, EventArgs e) 那么如何访问 e.Row.RowType ??
      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      相关资源
      最近更新 更多