2013-10-18 15 views
5

OK, tôi có điều khiển Gridview mà tôi sử dụng để chỉnh sửa bản ghi trong cơ sở dữ liệu của mình. Tôi cũng đã tham số hóa truy vấn. Đây là mã:Truy vấn cập nhật dường như xóa trường ghi nhớ

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
    AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" 
    DataSourceID="AccessDataSource1" 
    AutoGenerateColumns="False" DataKeyNames="ID" 
    AlternatingRowStyle-BackColor="Gray" 
    AlternatingRowStyle-CssClass="editGridFormat" RowStyle-CssClass="editGridFormat"   
    RowStyle-VerticalAlign="Top" 
    onselectedindexchanged="GridView1_SelectedIndexChanged"> 

    <Columns> 
     <asp:CommandField ShowSelectButton="True" /> 
     <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
      ReadOnly="True" SortExpression="ID" /> 
     <asp:BoundField DataField="BlogTitle" HeaderText="BlogTitle" 
      SortExpression="BlogTitle" /> 
     <asp:ImageField DataImageUrlField="Image" HeaderText="Image" 
      DataImageUrlFormatString="~/PlaceImages/{0}" ControlStyle-CssClass="editPhotoGridFormat" 
      AlternateText="Something went wrong" 
      NullDisplayText="No picture on file" /> 
     <asp:TemplateField headertext="PicText"> 
      <EditItemTemplate> 
       <asp:TextBox id="PicTextBox" runat="server" text='<%# Eval("PicText")%>' textmode="MultiLine" height="300px" width="300px" /> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <%# Eval("PicText")%> 
      </ItemTemplate> 
     </asp:TemplateField> 

     <asp:BoundField DataField="TravelDate" HeaderText="TravelDate" SortExpression="TravelDate" /> 
     <asp:TemplateField headertext="BeginText"> 
      <EditItemTemplate> 
       <asp:TextBox id="BeginTextBox" runat="server" text='<%# Eval("BeginText")%>' textmode="MultiLine" height="300px" width="300px" /> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <%# Eval("BeginText")%> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="Caption" HeaderText="Caption" /> 
     <asp:BoundField DataField="City" HeaderText="City" /> 
     <asp:BoundField DataField="Country" HeaderText="Country" 
      SortExpression="Country" /> 
     <asp:TemplateField headertext="EndText"> 
      <EditItemTemplate> 
       <asp:TextBox id="EndTextBox" runat="server" text='<%# Eval("EndText")%>' textmode="MultiLine" height="300px" width="300px" /> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <%# Eval("EndText")%> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 

</asp:GridView> 

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/TravelJoansDB.mdb" 
    SelectCommand="SELECT * FROM [Table2]" 
    DeleteCommand="DELETE FROM Table2 WHERE [ID] = ?" 
    UpdateCommand="UPDATE Table2 SET [BlogTitle] = ?, 
            [Image] = ?, 
            [PicText] = ?, 
            [TravelDate] = ?, 
            [BeginText] = ?, 
            [Caption] = ?, 
            [City] = ?, 
            [Country] = ?, 
            [EndText] = ? 
            WHERE [ID] = ? " > 

    <DeleteParameters> 
     <asp:Parameter Name="ID" Type="Int32" /> 
    </DeleteParameters> 
    <UpdateParameters> 
     <asp:Parameter Name="BlogTitle" Type="String" /> 
     <asp:Parameter Name="Image" Type="String" /> 
     <asp:Parameter Name="PicText" Type="String" /> 
     <asp:Parameter Name="TravelDate" DbType="Date" /> 
     <asp:Parameter Name="BeginText" Type="String" /> 
     <asp:Parameter Name="Caption" Type="String" /> 
     <asp:Parameter Name="City" Type="String" /> 
     <asp:Parameter Name="Country" Type="String" /> 
     <asp:Parameter Name="EndText" Type="String" /> 
    </UpdateParameters> 
</asp:AccessDataSource> 

Không chắc chắn nó có liên quan đến điều khiển TemplateField hay loại Tham số là chuỗi. Lý do tôi đề cập đến thuộc tính Type là bởi vì trong cơ sở dữ liệu Access của tôi, chúng thuộc loại ghi nhớ, nhưng điều duy nhất tôi có thể thấy đó là một nửa so sánh được là kiểu chuỗi. Tôi muốn cược rằng kiểu chuỗi không đủ lớn để giữ một trường ghi nhớ, nhưng tôi không biết điều gì khác có thể xảy ra. Mọi sự trợ giúp sẽ rất được trân trọng.

+0

Ngoài ra, ngay cả khi tôi không chỉnh sửa các trường cụ thể đó, chúng vẫn bị xóa, tất cả chúng. – Joseph

+1

Dường như một bản ghi nhớ có thể lớn hơn một chuỗi, bạn có nhiều khả năng hết bộ nhớ trước khi đạt đến giới hạn của một chuỗi. Điều gì xảy ra nếu bạn xóa lệnh Xóa? – codemonkeh

+0

Ồ, tôi nghĩ dây bị giới hạn ở 255 ký tự ... Hãy để tôi kiểm tra. – Joseph

Trả lời

6

Không có gì sai với trường ghi nhớ. Các edititemtemplatefields của nó, bạn không phải là dữ liệu ràng buộc. Thay đổi Eval-Bind, ví dụ, thay đổi này:

<EditItemTemplate> 
    <asp:TextBox id="PicTextBox" runat="server" text='<%# Eval("PicText")%>' textmode="MultiLine" height="300px" width="300px" /> 
</EditItemTemplate> 

này:

<EditItemTemplate> 
    <asp:TextBox id="PicTextBox" runat="server" text='<%# Bind("PicText")%>' textmode="MultiLine" height="300px" width="300px" /> 
</EditItemTemplate> 

Thay đổi này:

<EditItemTemplate> 
    <asp:TextBox id="BeginTextBox" runat="server" text='<%# Eval("BeginText")%>' textmode="MultiLine" height="300px" width="300px" /> 
</EditItemTemplate> 

này:

<EditItemTemplate> 
    <asp:TextBox id="BeginTextBox" runat="server" text='<%# Bind("BeginText")%>' textmode="MultiLine" height="300px" width="300px" /> 
</EditItemTemplate> 

Và sự thay đổi này:

<EditItemTemplate> 
    <asp:TextBox id="EndTextBox" runat="server" text='<%# Eval("EndText")%>' textmode="MultiLine" height="300px" width="300px" /> 
</EditItemTemplate> 

này:

<EditItemTemplate> 
    <asp:TextBox id="EndTextBox" runat="server" text='<%# Bind("EndText")%>' textmode="MultiLine" height="300px" width="300px" /> 
</EditItemTemplate> 

Tôi đã thử nghiệm nó với truy cập db. Hy vọng nó giúp!

+0

Ồ, đúng vậy. Lúc đầu, tôi đã thay đổi "Eval" trong điều khiển ItemTemplate, nhưng sau đó tôi phát hiện ra điều đó là sai. – Joseph

Các vấn đề liên quan