2011-07-18 94 views
12

Recibo este extraño error ... la clave principal en mi base de datos es 'DocumentID', así que sé que ese no es el problema. Estoy intentando que los botones de selección, edición & delete gridview funcionen, pero necesito que los nombres de los datos de los datos estén configurados correctamente para que estén disponibles para su uso. ¿algunas ideas?DataBinding: 'System.Data.DataRowView' no contiene una propiedad con el nombre

<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]" /> 

Aquí es el seguimiento de la pila ...

[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 

Respuesta

6

Bueno, no se ha seleccionado la columna de la documentid y por lo tanto no está presente en ninguno tabla de datos o DataView, que va a enlazar con la red o hacer referencia a que columna a través de tabla de datos

cambiar la consulta a

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

Parece que su SqlDataSource no devuelve la columna de la DocumentId.

tal vez debería cambiar la definición de origen de datos a esto:

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