사용자가 엑셀 파일을 데이터베이스로 가져올 수 있도록 페이지 작업 중입니다. 사용자가 정보를 커밋하기 전에 특정 필드를 조작하여 Excel 파일에서 DataSet을로드하고 GridView에 바인딩했습니다. RowUpdate에서 어떤 이유로 인해 NewValues 컬렉션이 비어 있습니다. 여기 DataSet 소스로 GridView 업데이트
내의 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로 사용할 수있는 열이 없습니다.
좋습니다. 적어도 나만이 아닙니다. 정보 주셔서 감사합니다. – William