Обновление GridView с источником DataSet - PullRequest
0 голосов
/ 24 марта 2011

Я работаю над страницей, чтобы позволить пользователю импортировать файл Excel в нашу базу данных.Я хочу позволить пользователю манипулировать определенными полями перед фиксацией информации, поэтому я загрузил DataSet из файла Excel и привязал его к GridView.По какой-то причине в rowUpdate моя коллекция NewValues ​​пуста.

Вот мой GridView:

<cc1:WWGridView ID="gvImportDisplay" runat="server" CssClass="grid-view" AllowSorting="false" ShowHeader="true"
    AutoGenerateColumns="true" 
    AutoGenerateEditButton="true"
    OnRowEditing="gvImportDisplay_RowEditing"
    OnRowCancelingEdit="gvImportDisplay_RowCancelingEdit"
    OnRowUpdating="gvImportDisplay_RowUpdating"
    >
    <EmptyDataTemplate>0 results found. </EmptyDataTemplate>
</cc1:WWGridView>

А вот мой код обновления:

protected void gvImportDisplay_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    foreach (DictionaryEntry entry in e.NewValues)
    {
        string headerText = entry.Key.ToString();
        if (string.IsNullOrEmpty(headerText))
            continue;
        string newValue = entry.Value.ToString();
        if (excelDataSet.Tables["ExcelInfo"].Rows[gvImportDisplay.EditIndex][headerText] == null)
            continue;
        excelDataSet.Tables["ExcelInfo"].Rows[gvImportDisplay.EditIndex][headerText] = newValue;
    }
    gvImportDisplay.EditIndex = -1;
    RefreshGridView();
}

«excelDataSet» - это свойство страницы, которое сохраняется в сеансе между обратными передачами.

Когда я выполняю шаг по коду, foreach полностью пропускается, потому что e.NewValues.Count = 0.

Кто-нибудь может понять, почему NewValues ​​будет пустым?Нужно ли заново связывать GridView перед обновлением?Или, может быть, потому что у меня нет DataKey, он не работает?Нет столбца, который я мог бы использовать в качестве DataKey, потому что я не могу гарантировать, что какой-то конкретный столбец уникален.

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Полагаю, в этом случае двусторонняя привязка данных не работает.Вы должны обернуть набор данных в ObjectDataSource и установить этот источник данных, используя GridView.DataSourceID

пример:

http://msdn.microsoft.com/en-us/library/1se6685s.aspx

0 голосов
/ 25 марта 2011

e.NewValues ​​по-прежнему не работает, я полагаю, потому что у меня нет DataKeys.

Мне удалось получить работающее обновление, определив столбцы вручную и выполнив FindControl для получения новогоценности.Так как мне все равно придется вручную определять столбцы для другого аспекта вида сетки, я собираюсь пойти на это.

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