Оба DataSource и DataSourceID определены в списке просмотра, удалить один источник - PullRequest
2 голосов
/ 26 января 2011

Я получаю следующую ошибку с тех пор, как переместил свой 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 ]

2 голосов
/ 26 января 2011

Я думаю, это из-за некоторых конфликтов имен. Попробуйте переименовать либо ваше имя DataTable, либо идентификатор ListView, чем-то еще, например TestListView. Кроме того, у вас есть дополнительная строка для создания New DataTable, которая является избыточностью при назначении таблицы, возвращаемой методом GetTestTable

Редактировать

Если у вас все еще есть какие-то проблемы, то где-то еще вы можете назначить источник данных, установив DataSourceID для какого-либо источника данных, затем сделайте что-то вроде этого:

TestView.DataSourceID = null;
testDAO tda = new testDAO();
DataTable testTable = tda.GetTestTable();
TestView.DataSource = testTable;
TestView.DataBind();

установка для DataSourceID значения null определенно решит проблему ..

1 голос
/ 26 января 2011

id переписать его на этот

testDAO tda = new testDAO();
TestView.DataSource = tda.GetTestTable();
TestView.DataBind();

, и это должно сделать это - нет необходимости создавать DataTable и затем назначать ему объект данных из tda.GetTestTable ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...