我正在尝试将数据库行绑定到 C# 中的文本框,因此它是默认值(但文本框仍然可以编辑)。
我当前遇到的问题是文本框不允许我附加带有错误的数据源(System.Web.UI.WebControls.TextBox 不包含“DataSource”的定义......)
我能够成功将数据源绑定到下拉列表,但对文本框使用相同的代码不起作用。
txtBox1.DataSource = "DataSource";
txtBox1.DataBind();
原因是
DataSource
包含多行。下拉菜单可以支持这一点,因为它将每行显示一个条目,但文本框不支持它。只有一个文本字段,应该使用数据源中的哪一行?
要设置
TextBox
的文本,请使用 Text
属性。
如果您想为文本框设置一个值,您需要做的是:
textBox1.Text= "MyText";
然后用户可以更改该值,并且在回发时您可以使用该值来满足您和用户的需要
您无法将 DataSource 绑定到 WebForms 中的 TextBox。您可以使用索引器将文本设置为 DataRow 中的字段。
`txtBox1.Text = datarow["SomeField"]`
DataView dv = DataSource.DefaultView;
dv.RowFilter = "id=1"; // or whatever as per your need to make sure only 1 row is there
textBox1.DataBindings.Add("Text",dv,"id");
如果在 GridView、DataGrid、ListView、DetailsView、FormView 等数据绑定控件的项目模板中使用 TextBox 控件,您可以根据所选数据源(如 sql、xml、object 等)使用 eval、bind、xpath。
例如,
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("TITLE")%>'> </asp:TextBox>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("TITLE")%>'> </asp:TextBox>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# XPath("TITLE")%>'> </asp:TextBox>
如果 TextBox 控件单独使用或在数据绑定控件之外使用,可以按以下格式使用。
<asp:TextBox ID="TextBox1" runat="server" Text='<%#TITLE%>'> </asp:TextBox>
在文件隐藏代码中,只需在任何页面生命周期事件中使用即可。
this.Page.Databind();