我在ASP.net中整理了一个GridView表,允许用户批准一系列记录。作为此批准过程的一部分,我想为用户提供一个空列,以便在必要时提供注释。显示的唯一记录将是尚未获得批准的记录,因此不需要加载任何评论。一旦获得批准,用户将无法再次查看这些记录。
如何将此空列添加到GridView?同样,没有数据可以加载到此列中。获得批准后,SQL Server表中的记录将使用时间戳和注释进行更新。
到目前为止,我在这里找到的大多数内容都与添加空行有关,而与列无关。我对ASP.net完全陌生,所以任何帮助都会非常感激。
当前列代码:
asp:TemplateField HeaderText="Comment" ItemStyle-Width="500px" ItemStyle-Wrap="true" SortExpression="Comment" /
答案 0 :(得分:1)
只是一个简单的解决方案,我很快就把它放在了一起。它使用GridView的OnRowCommand
事件。
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField HeaderText="TextBox">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Text='<%# Eval("textfield") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="UpdateButton">
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text="Update" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
背后的代码
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
//cast the sender back to a gridview
GridView gv = sender as GridView;
//cast the commandsource back to a button
Button btn = e.CommandSource as Button;
//cast the namingcontainer of the button back to a gridviewrow
GridViewRow row = btn.NamingContainer as GridViewRow;
//find the correct textbox using findcontrol and the index obtained from the row
TextBox tb = gv.Rows[row.DataItemIndex].FindControl("TextBox1") as TextBox;
//show result
Label1.Text = tb.Text;
}
<强>更新强>
或者,如果您想通过按下按钮一次更新所有记录。
protected void Button1_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
TextBox tb = row.FindControl("TextBox1") as TextBox;
Label1.Text += tb.Text + "<br>";
}
}