自从将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肯定会解决问题。

10-05 18:36