2016-07-18 3 views
1

Ich habe also eine Gridview, die mit einer SQL-Datenquelle begrenzt ist. Danach habe ich eine Bearbeitungsvorlage für eine Spalte geändert und anstelle von textBox eine Dropdown-Liste verwendet. In dieser Dropdown-Liste habe ich zwei Elemente und ihre Werte eingegeben. Wenn ich jetzt eine Gridview-Spalte aktualisiere, in der ich die Dropdown-Liste installiert habe, wird der alte Wert nicht auf seinen neuen Wert aktualisiert, sondern erhält einen NULL-Wert.Dropdown-Liste in der Gridview-Bearbeitungsvorlage aktualisiert den Wert der Spalte

Dies ist mein Code:

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

Gibt es andere Sachen, die ich ändern müssen, so könnte dies umgehen?

+0

Ändern Sie die ID der DDL in StatusP und versuchen Sie es mit agian. – Kami

+0

Dies funktionierte nicht für mich :( – Goran

Antwort

1

Sie müssen Bind Ihr DropDownList auf Ihr Datenbankfeld

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

Der wichtigste Teil ist

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

Dies wird den Wert, den Sie verursacht auswählen, um Ihre Datenquelle zu übergeben.

+0

Hallo Kirk, nachdem ich getan habe, was Sie vorschlagen, bekomme ich diesen Fehler - 'ddlStatus' hat einen SelectedValue, der ungültig ist, weil es nicht in der Liste der Elemente existiert. Ich weiß wo das Problem ist, aber ich bin mir nicht sicher, wie ich es lösen soll.Ich habe eine Spalte in meiner Datenbanktabelle, die standardmäßig leer ist.Und wenn ich sie bearbeite, muss ich dieser Spalte Wert geben und dieser Wert kann nur "Prihvaćena" oder "Prihvaćena" sein. Odbijena ". Mein ddl ist nicht mit irgendetwas verbunden, aber es hat zwei Elemente mit ihrem Text und Wert. Wenn ich auf Speichern drücke, würde ich den Wert an That Spalte in der Datenbank gesendet, und es nicht in meinem Code aus Frage: ( – Goran

+0

@Goran können Sie eine Spalte "None" hinzufügen, die ausgewählt wird, wenn Ihr Wert am Anfang leer ist. Ich habe die Antwort aktualisiert, aber lassen Sie mich wissen, wenn es andere Anforderungen für dieses Feld gibt. – Kirk

+0

Fehler diaappeared nach dies aber jetzt wie am anfang, nachdem ich vor habe ss update, es sendet Nullwert no mater, was in dropdownlist ausgewählt ist. Ich weiß wirklich nicht, was das Problem ist. Das erste Mal versuche ich dies, und ich wollte nur von Textfeld zu Dropdown-Liste ändern, um den Benutzer von einer der beiden möglichen Strings zu beschränken ... Vielleicht mache ich das falsch, weiß nicht wirklich :( – Goran