Подтвердить что ты не робот

DataBinding: "System.Data.DataRowView" не содержит свойства с именем

Я получаю эту странную ошибку... первичный ключ в моей базе данных - "DocumentID", поэтому я знаю, что это не проблема. Я пытаюсь заставить кнопки выбора, редактирования и удаления gridview работать, но мне нужно, чтобы datakeynames были правильно настроены, чтобы они были доступны для использования. любые идеи?

<asp:GridView ID="GridView1" runat="server" DataSourceID="sdsDocuments" EnableModelValidation="True"
        SelectedIndex="0" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" DataKeyNames="DocumentID, DocumentTitle, DocumentBody">
        <Columns>
            <asp:BoundField DataField="DocumentID" HeaderText="DocumentID" ReadOnly="True" SortExpression="ID" />
            <asp:BoundField DataField="DocumentTitle" HeaderText="DocumentTitle" SortExpression="Title" />
            <asp:BoundField DataField="DocumentBody" HeaderText="DocumentBody" SortExpression="Body" />
            <asp:CommandField ShowSelectButton="True" ShowDeleteButton="True" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="sdsDocuments" runat="server" ConnectionString="<%$ ConnectionStrings:blcDocumentationConnectionString %>"
        SelectCommand="SELECT [DocumentTitle], [DocumentBody] FROM [tblDocument]" />

Вот трассировка стека...

    [HttpException (0x80004005): DataBinding: 'System.Data.DataRowView' does not contain a                 property with the name 'DocumentID'.] 
        System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName) +8672869
       System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) +2178
       System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +57
       System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerable data) +14
       System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +114
       System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +31
       System.Web.UI.WebControls.DataBoundControl.PerformSelect() +142
       System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73
       System.Web.UI.WebControls.GridView.DataBind() +4
       System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +82
       System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +72
       System.Web.UI.Control.EnsureChildControls() +87
       System.Web.UI.Control.PreRenderRecursiveInternal() +44
       System.Web.UI.Control.PreRenderRecursiveInternal() +171
       System.Web.UI.Control.PreRenderRecursiveInternal() +171

   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842
4b9b3361

Ответ 1

Ну, вы не выбрали столбец documentid и, следовательно, он не присутствует ни в datatable, ни в dataview, который вы связываете с сеткой или ссылаетесь на этот столбец через datatable.

Измените свой запрос на

 SelectCommand="SELECT [DocumentID],[DocumentTitle], [DocumentBody] FROM [tblDocument]" /> 

Ответ 2

Кажется, что ваш sqldatasource не возвращает столбец DocumentId.

Возможно, вам следует изменить определение источника данных:

<asp:SqlDataSource ID="sdsDocuments" runat="server" ConnectionString="<%$ ConnectionStrings:blcDocumentationConnectionString %>"
    SelectCommand="SELECT [DocumentID], [DocumentTitle], [DocumentBody] FROM [tblDocument]" />