2016-09-22 13 views
0

私はGridViewでMVC ASP.NETプロジェクトを持っています。 "Enable Editing"、 "Enable Deleting"がインストールされ、データ列がTemplateFieldに変換されます。 SqlDataSourceが接続されています。テーブルには主キーがあります。 SqlDataSourceがインストールされている場合は、「INSERT、UPDATE、およびDELETE文を生成する」。 "編集"または "削除"をクリックすると、ページの再読み込みが行われますが、データの編集や削除はできません。GridViewで項目が編集/削除されない

<asp:GridView ID="GridView1" runat="server" DataKeyNames="Id" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" > 
 
     <Columns> 
 
      <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> 
 
      <asp:TemplateField HeaderText="Id" SortExpression="Id"> 
 
       <EditItemTemplate> 
 
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("Id") %>'></asp:Label> 
 
       </EditItemTemplate> 
 
       <ItemTemplate> 
 
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("Id") %>'></asp:Label> 
 
       </ItemTemplate> 
 
      </asp:TemplateField> 
 
      <asp:TemplateField HeaderText="Caption" SortExpression="Caption"> 
 
       <EditItemTemplate> 
 
        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Caption") %>'></asp:TextBox> 
 
       </EditItemTemplate> 
 
       <ItemTemplate> 
 
        <asp:Label ID="Label2" runat="server" Text='<%# Bind("Caption") %>'></asp:Label> 
 
       </ItemTemplate> 
 
      </asp:TemplateField> 
 
      <asp:TemplateField HeaderText="Text" SortExpression="Text"> 
 
       <EditItemTemplate> 
 
        <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Text") %>'></asp:TextBox> 
 
       </EditItemTemplate> 
 
       <ItemTemplate> 
 
        <asp:Label ID="Label3" runat="server" Text='<%# Bind("Text") %>'></asp:Label> 
 
       </ItemTemplate> 
 
      </asp:TemplateField> 
 
      
 
      <asp:CheckBoxField HeaderText="ABC" DataField="Checked" /> 
 
     </Columns> 
 
     <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" /> 
 
     <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" /> 
 
     <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" /> 
 
     <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" /> 
 
     <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" /> 
 
     <SortedAscendingCellStyle BackColor="#FFF1D4" /> 
 
     <SortedAscendingHeaderStyle BackColor="#B95C30" /> 
 
     <SortedDescendingCellStyle BackColor="#F1E5CE" /> 
 
     <SortedDescendingHeaderStyle BackColor="#93451F" /> 
 
    </asp:GridView>

+2

MVCプロジェクトでWebFormsコントロールを使用するのは、WebFormsとMVCプロジェクトが混在しており、コントロールがWebFormsの部分でのみ使用されている場合にのみ機能します。 – Richard

+0

アスワールありがとう!だから私はViewでGridViewを使用することはできません? – AN90

+2

MVCのアクションとコントローラでWebFormsコントロール(名前空間 'System.Web.UI.WebControls'と' System.Web.UI.HtmlControls')を使用することはできません。 WebFormsコントロールは、サーバー上でページのライフサイクルが発生することを前提としています。 *いくつかの機能がハッキングされる可能性がありますが、ページをMVCまたはWebFormsのいずれかに切り替えることをお勧めします。そのレベルでのミキシングは、進行中の問題が発生する可能性があります。 – Richard

答えて

2

あなたはできない使用Webフォームコントロール(名前空間System.Web.UI.WebControlsSystem.Web.UI.HtmlControls)MVCのアクションとコントローラと。

WebFormsコントロールは、サーバーでページのライフサイクルが発生していることを前提にしていますが、この一連のイベント(および関連するコード構成)はMVCコントローラとアクションには存在しません。

さまざまなハッキングレベルでこれが行われた例があります。ある程度の成功で、あなたは潮と戦うでしょう。パラダイムを完全に切り替える方が良いです:ページはMVCかWebFormsです。ミキシングは後で痛みを軽減するだけです。

関連する問題