2016-07-18 12 views
1

私はSQLデータソースに限定されたgridviewを持っています。その後、私は1列の編集テンプレートを変更し、テキストボックスの代わりにドロップダウンリストを使用しました。そのドロップダウンリストには、2つの項目とその値を入力しました。今私はドロップダウンリストをインストールしたグリッドビューの列を更新するときに古い値を新しい値に更新せず、NULL値を取得します。gridviewのドロップダウンリストテンプレートを編集しないでください。列の値を更新しないでください

これは私のコードです:

<asp:GridView ID="gvNeobrađene" HorizontalAlign="Center" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="sdsNeobradene" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowUpdating="gvNeobrađene_RowUpdating"> 
      <AlternatingRowStyle BackColor="White" /> 
      <Columns> 
       <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="Id" /> 
       <asp:BoundField DataField="Ime" HeaderText="Ime" SortExpression="Ime" /> 
       <asp:BoundField DataField="Prezime" HeaderText="Prezime" SortExpression="Prezime" /> 
       <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" /> 
       <asp:BoundField DataField="Telefon" HeaderText="Telefon" SortExpression="Telefon" /> 
       <asp:BoundField DataField="Napomena" HeaderText="Napomena" SortExpression="Napomena" /> 
       <asp:BoundField DataField="SeminarID" HeaderText="SeminarID" SortExpression="SeminarID" /> 
       <asp:BoundField DataField="TerminID" HeaderText="TerminID" SortExpression="TerminID" /> 
       <asp:CheckBoxField DataField="PotvrdaP" HeaderText="PotvrdaP" SortExpression="PotvrdaP" ReadOnly="false"/> 
       <asp:TemplateField HeaderText="v" SortExpression="StatusP"> 
        <EditItemTemplate> 
         <asp:DropDownList ID="ddlStatus" runat="server"> 
          <asp:ListItem Value="Prihvaćena">Prihvaćena</asp:ListItem> 
          <asp:ListItem Value="Odbijena">Odbijena</asp:ListItem> 
         </asp:DropDownList> 
        </EditItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="Label1" runat="server" Text='<%# Bind("StatusP") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:CommandField ButtonType="Button" CancelText="Odustani" DeleteText="Izbriši" EditText="Uredi" InsertText="Ubaci" NewText="Novo" SelectText="Odaberi" ShowEditButton="True" ShowHeader="True" UpdateText="Spremi" ShowDeleteButton="True" /> 
      </Columns> 
      <EditRowStyle BackColor="#2461BF" /> 
      <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
      <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
      <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
      <RowStyle BackColor="#EFF3FB" /> 
      <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
      <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
      <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
      <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
      <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
     </asp:GridView> 
     <asp:SqlDataSource ID="sdsNeobradene" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ ConnectionStrings:SeminarBazaConnectionString %>" 
      DeleteCommand="DELETE FROM [Predbiljezba] WHERE [Id] = @original_Id AND [Ime] = @original_Ime AND [Prezime] = @original_Prezime AND [Email] = @original_Email AND [Telefon] = @original_Telefon AND (([Napomena] = @original_Napomena) OR ([Napomena] IS NULL AND @original_Napomena IS NULL)) AND [SeminarID] = @original_SeminarID AND [TerminID] = @original_TerminID AND [PotvrdaP] = @original_PotvrdaP AND (([StatusP] = @original_StatusP) OR ([StatusP] IS NULL AND @original_StatusP IS NULL))" InsertCommand="INSERT INTO [Predbiljezba] ([Ime], [Prezime], [Email], [Telefon], [Napomena], [SeminarID], [TerminID], [PotvrdaP], [StatusP]) VALUES (@Ime, @Prezime, @Email, @Telefon, @Napomena, @SeminarID, @TerminID, @PotvrdaP, @StatusP)" OldValuesParameterFormatString="original_{0}" 
      SelectCommand="SELECT * FROM [Predbiljezba] WHERE ([PotvrdaP] = @PotvrdaP)" 
      UpdateCommand="UPDATE [Predbiljezba] SET [Ime] = @Ime, [Prezime] = @Prezime, [Email] = @Email, [Telefon] = @Telefon, [Napomena] = @Napomena, [SeminarID] = @SeminarID, [TerminID] = @TerminID, [PotvrdaP] = @PotvrdaP, [StatusP] = @StatusP WHERE [Id] = @original_Id"> 
      <DeleteParameters> 
       <asp:Parameter Name="original_Id" Type="Int32" /> 
       <asp:Parameter Name="original_Ime" Type="String" /> 
       <asp:Parameter Name="original_Prezime" Type="String" /> 
       <asp:Parameter Name="original_Email" Type="String" /> 
       <asp:Parameter Name="original_Telefon" Type="String" /> 
       <asp:Parameter Name="original_Napomena" Type="String" /> 
       <asp:Parameter Name="original_SeminarID" Type="Int32" /> 
       <asp:Parameter Name="original_TerminID" Type="Int32" /> 
       <asp:Parameter Name="original_PotvrdaP" Type="Boolean" /> 
       <asp:Parameter Name="original_StatusP" Type="String" /> 
      </DeleteParameters> 
      <InsertParameters> 
       <asp:Parameter Name="Ime" Type="String" /> 
       <asp:Parameter Name="Prezime" Type="String" /> 
       <asp:Parameter Name="Email" Type="String" /> 
       <asp:Parameter Name="Telefon" Type="String" /> 
       <asp:Parameter Name="Napomena" Type="String" /> 
       <asp:Parameter Name="SeminarID" Type="Int32" /> 
       <asp:Parameter Name="TerminID" Type="Int32" /> 
       <asp:Parameter Name="PotvrdaP" Type="Boolean" /> 
       <asp:Parameter Name="StatusP" Type="String" /> 
      </InsertParameters> 
      <SelectParameters> 
       <asp:Parameter DefaultValue="False" Name="PotvrdaP" Type="Boolean" /> 
      </SelectParameters> 
      <UpdateParameters> 
       <asp:Parameter Name="Ime" Type="String" /> 
       <asp:Parameter Name="Prezime" Type="String" /> 
       <asp:Parameter Name="Email" Type="String" /> 
       <asp:Parameter Name="Telefon" Type="String" /> 
       <asp:Parameter Name="Napomena" Type="String" /> 
       <asp:Parameter Name="SeminarID" Type="Int32" /> 
       <asp:Parameter Name="TerminID" Type="Int32" /> 
       <asp:Parameter Name="PotvrdaP" Type="Boolean" /> 
       <asp:Parameter Name="StatusP" Type="String" /> 
       <asp:Parameter Name="original_Id" Type="Int32" /> 
       <asp:Parameter Name="original_Ime" Type="String" /> 
       <asp:Parameter Name="original_Prezime" Type="String" /> 
       <asp:Parameter Name="original_Email" Type="String" /> 
       <asp:Parameter Name="original_Telefon" Type="String" /> 
       <asp:Parameter Name="original_Napomena" Type="String" /> 
       <asp:Parameter Name="original_SeminarID" Type="Int32" /> 
       <asp:Parameter Name="original_TerminID" Type="Int32" /> 
       <asp:Parameter Name="original_PotvrdaP" Type="Boolean" /> 
       <asp:Parameter Name="original_StatusP" Type="String" /> 
      </UpdateParameters> 
     </asp:SqlDataSource> 

は、私は、これは仕事ができる変更する必要があり、他のものはありますか?

+0

DDLのIDをStatusPに変更し、agianを試してください。 – Kami

+0

これは私のために働いていませんでした:( – Goran

答えて

1

あなたがバインドにごDropDownListデータベースのフィールドに必要

<asp:DropDownList ID="ddlStatus" runat="server" 
    SelectedValue='<%# Bind("StatusP") %>'> 
    <asp:ListItem Value="">None</asp:ListItem> 
    <asp:ListItem Value="Prihvaćena">Prihvaćena</asp:ListItem> 
    <asp:ListItem Value="Odbijena">Odbijena</asp:ListItem> 
</asp:DropDownList> 

重要な部分は、これはあなたのデータソースに渡すために選択した値を引き起こします

SelectedValue='<%# Bind("StatusP") %>' 

です。

+0

こんにちはカーク、私はあなたがこのエラーを取得することを提案した後 - 'ddlStatus'は、項目のリストに存在しないため無効なSelectedValueを持っています。私はそれを解決する方法がわかりません。私は自分のデータベーステーブルにデフォルトで空のカラムを持っています。編集するときに、そのカラムに値を与える必要があり、その値は "Prihvaćena"私のddlは何もバインドされていませんが、テキストと値の2つの項目があります。私がsaveを押すと、選択された値がデータベースのその列に送られず、質問のコードにありません: ( – Goran

+0

@ゴランあなたが最初にあなたの値が空の場合に選択される "なし"列を追加することができます私は答えを更新しましたが、このフィールドのための他の要件があるかどうか知らせてください – Kirk

+0

後にdiappearedこれは今、私が前倒ししたssの更新、ドロップダウンリストで選択されているものがないnull値を送信します。私は本当に何が問題なのか分からない。私はこれを試して初めて、私はちょうど2つの可能な文字列の1つを入力からユーザを制限するためにドロップダウンリストにテキストボックスを変更したいと思った...多分私は間違った方法をしている、実際に知らない:( – Goran

関連する問題