如何将空的,未绑定的注释列添加到GridView?

时间:2017-06-20 17:58:50

标签: sql asp.net vb.net gridview

我在ASP.net中整理了一个GridView表,允许用户批准一系列记录。作为此批准过程的一部分,我想为用户提供一个空列,以便在必要时提供注释。显示的唯一记录将是尚未获得批准的记录,因此不需要加载任何评论。一旦获得批准,用户将无法再次查看这些记录。

如何将此空列添加到GridView?同样,没有数据可以加载到此列中。获得批准后,SQL Server表中的记录将使用时间戳和注释进行更新。

到目前为止,我在这里找到的大多数内容都与添加空行有关,而与列无关。我对ASP.net完全陌生,所以任何帮助都会非常感激。

当前列代码:

asp:TemplateField HeaderText="Comment" ItemStyle-Width="500px" ItemStyle-Wrap="true" SortExpression="Comment" /

1 个答案:

答案 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>";
    }
}