【问题标题】:Programaticly Textbox to Gridview without DataSource以编程方式将文本框转换为没有数据源的 Gridview
【发布时间】:2025-12-06 20:40:02
【问题描述】:

我有一个TextBox 和一个Gridview

<asp:Textbox ID="TextBox1" runat="server" ></asp:Textbox> 

<asp:GridView ID="GridView1" runat="server">
        </asp:GridView>

如果没有DataSource,我如何以编程方式在我的 .cs 文件中添加 TextBox1.Text 到 Gridview 的第一列?

GridView1.Columns[1].ToString() = TextBox1.Text like that example

【问题讨论】:

  • 你希望每一行的第一列都有那个值吗?
  • GridView1.Columns[1] 指的是第二列,而不是第一列
  • @Revinder 不,只是第一列第一行。当我添加另一个文本时,它应该是第一列第二行。
  • @Alex 你是对的。但是我该怎么做呢?

标签: c# .net asp.net gridview


【解决方案1】:

您是否正在寻找一种在没有数据时处理信息的方法?如果是这样,您可以在 GridView 中使用 EmptyDataTemplate 并以编程方式访问它以显示您的 TextBox 的值。

如果根本没有要使用的“绑定”数据,那么 GridView 将需要某种具有至少一个条目的数据源才能正常运行和显示。但是,您可以轻松添加一些虚拟数据以启用 GridView 的功能,然后您可以根据自己的喜好对其进行调整。

假设您有一个按钮来启动回发(或者您可以使用 TextBox 的 OnTextChanged 事件),只需添加以下代码。

List<string> dummyList = new List<string>(){""};
GridView1.DataSource = dummyList;
GridView1.DataBind();

注意:列表对象只是为 GridView 的数据源使用占位符的一种快速简便的方法。如果您真的要使用多个列,我建议您创建一个简单的 DataTable,其中包含您需要的列、插入和空行,并与之绑定。它消除了必须以编程方式创建所有列的麻烦。

然后在您的 GridView 的 RowDataBound 事件中,您可以随心所欲地使用 GridView。

if (e.Row.RowType -= DataControlRowType.DataRow)
{
   e.Row.Cells(0).Text = TextBox1.Text;
}

【讨论】:

    【解决方案2】:

    好的,试试这个。这会将第一行的第一个单元格设置为文本框的值:

    GridView1.Rows[0].Cells[0].Text = TextBox1.Text;
    

    请记住,列和行是使用从零开始的索引访问的,因此第二行的第一个单元格的访问方式如下:

    GridView1.Rows[1].Cells[0].Text
    

    【讨论】:

    • 我收到此代码错误“”索引超出范围。必须是非负数且小于集合的大小。参数名称:index""
    • @Soner Gönül:在尝试设置任何值之前,您的 GridView 是否实际上包含任何行和列?否则,您可能需要先创建它们。
    • 我认为你是对的。如果您将 TBox 放入其中没有任何内容,则 GridView 将给出异常。
    • 没有数据源就不存在GridView!所以是的,您需要有数据来生成 GridView 并 然后 根据需要附加列
    最近更新 更多