2013-10-18 6 views
5

さて、データベースのレコードを編集するために使用するGridviewコントロールがあります。私もクエリをパラメータ化しました。コードは次のとおりです。更新クエリでメモフィールドが削除されているようです

<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> 

TemplateFieldコントロールまたはパラメータタイプが文字列であるかどうかはわかりません。なぜなら、私のAccessデータベースではメモ型のものだからですが、私が見ることのできる半ば匹敵するものは文字列型です。私は、文字列タイプがメモフィールドを保持するのに十分な大きさではないことを賭けるだろうが、他に何が起こっているのか分からない。どんな助けでも大歓迎です。

+0

また、特定のフィールドを編集しなくても、それらはすべて削除されます。 – Joseph

+1

メモが文字列より大きくなる可能性は低いです。文字列の限界に達する前にメモがなくなる可能性が高くなります。 削除コマンドを削除するとどうなりますか? – codemonkeh

+0

ああ、私は文字列が255文字に制限されていると思った。 – Joseph

答えて

6

メモ欄に問題はありません。そのedititemtemplatefields、あなたはデータをバインドしていません。これに

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

:これを変更し、例えば、EvalBindに変更し

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

変更この:これに

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

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

と変更この:これに

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

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

私がアクセスデシベルでそれをテストしています。それが役に立てば幸い!

+0

うわー、そうです。最初はItemTemplateコントロールの「評価」を変更しましたが、間違っていることがわかりました。 – Joseph

関連する問題