自从将DataTable移至其他函数以来,我一直遇到以下错误。
Both DataSource and DataSourceID are defined on 'TestView'. Remove one definition.
如果您对样式/标准有任何技巧,我也欢迎您,我对aspx编码还很陌生。知道是什么原因造成的吗?它不是它自己的功能之前就没有发生过。这是局部变量问题吗?
以下是绑定并在错误中突出显示的代码的代码:
testDAO tda = new testDAO();
DataTable testTable = new DataTable("TestView");
testTable = tda.GetTestTable();
TestView.DataSource = testTable;
TestView.DataBind();
这是GetTestTable()的代码:
public DataTable GetTestTable()
{
DataTable testTable = new DataTable("TestView");
testTable.Columns.Add("testdata", typeof(String));
testTable.Columns.Add("user", typeof(String));
testTable.Columns.Add("date", typeof(String));
DataRow arow = testTable.NewRow();
arow["testdata"] = "test data";
arow["user"] = "System";
arow["date"] = "";
testTable.Rows.Add(arow);
return testTable;
}
aspx文件中的列表视图:
<asp:ListView ID="TestView" runat="server">
<ItemTemplate>
<tr id="row" runat="server" class='<%# Container.DataItemIndex % 2 == 0 ? "row" : "altrow" %>'>
<td align="left">
<%# Eval("testdata") %>
</td>
<td align="center">
<%# Eval("user") %>
</td>
<td align="center">
<%# Eval("date") %>
</td>
</tr>
</ItemTemplate>
<LayoutTemplate>
<table class="system">
<tr>
<th>
Test Data
</th>
<th>
User
</th>
<th>
Date
</th>
</tr>
<tr id="itemPlaceholder" runat="server" />
</table>
</LayoutTemplate>
</asp:ListView>
最佳答案
我认为这是由于某些命名冲突而引起的。请尝试重命名您的DataTable名称或ListView ID来代替TestListView
之类的东西。另外,在分配从方法DataTable
返回的表时,还有一行额外的代码用于创建新的GetTestTable
编辑
如果您仍然遇到问题,则可以通过将DataSourceID设置为某些数据源提供的方式在其他地方分配数据源,然后执行以下操作:
TestView.DataSourceID = null;
testDAO tda = new testDAO();
DataTable testTable = tda.GetTestTable();
TestView.DataSource = testTable;
TestView.DataBind();
将DataSourceID设置为null肯定会解决问题。