DataSource和DataSourceID都在listview上定义,删除一个源

时间:2011-01-26 17:09:48

标签: c# asp.net listview datatable

自从我将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>

2 个答案:

答案 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()

为其分配数据表