自从我将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>
答案 0 :(得分:2)
我认为由于某些命名冲突,请尝试将您的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肯定会解决问题..
答案 1 :(得分:1)
id将其重写为此
testDAO tda = new testDAO();
TestView.DataSource = tda.GetTestTable();
TestView.DataBind();
并且应该这样做 - 不需要创建DataTable然后从tda.GetTestTable()
为其分配数据表