Diskusní fóra - Téma

Otázka - zodpovězená Téma: DropDownList

RSS Feed RSS Feed

Diskusní fóra > ASP.NET > DropDownList

DropDownList

Datum: 31.8.2010 18:29
Autor: Jan Nepraš
Hodnocení autora: 0
Příspěvků: 5
Dobrý den,

načítám do DropDownListu data z jedné realce, které pak ukládám do druhé relace. Data se do DropDownListu úspěšně načtou, ale když pak ve vkládacím formuláři vyberu hodnotu a chci ji uložit do jiné tabulky vyhodí to chybu:

Cannot insert the value NULL into column 'StateId', table 'TaskOrganizerDB.dbo.Requests'; column does not allow nulls. INSERT fails.

Zde je zdrojový kód:


<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" %>

<script runat="server">

</script>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:TaskOrganizerDBConnectionString %>" 
    DeleteCommand="DELETE FROM [Requests] WHERE [RequestId] = @RequestId" 
    InsertCommand="INSERT INTO [Requests] ([Title], [Description], [DateCreated], [DateExpiration], [CreatedBy], [StateId]) VALUES (@Title, @Description, @DateCreated, @DateExpiration, @CreatedBy, @StateId)" 
    SelectCommand="SELECT * FROM [Requests] WHERE ([RequestId] = @RequestId)" 
    
        UpdateCommand="UPDATE [Requests] SET [Title] = @Title, [Description] = @Description, [DateCreated] = @DateCreated, [DateExpiration] = @DateExpiration, [CreatedBy] = @CreatedBy, [StateId] = @StateId WHERE [RequestId] = @RequestId">
        <SelectParameters>
            <asp:QueryStringParameter Name="RequestId" QueryStringField="id" Type="Int32" />
        </SelectParameters>
        <DeleteParameters>
            <asp:Parameter Name="RequestId" Type="Int32" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Name="Title" Type="String" />
            <asp:Parameter Name="Description" Type="String" />
            <asp:Parameter Name="DateCreated" Type="DateTime" />
            <asp:Parameter Name="DateExpiration" Type="DateTime" />
            <asp:Parameter Name="CreatedBy" Type="Int32" />
            <asp:Parameter Name="StateId" Type="Int32" />
            <asp:Parameter Name="RequestId" Type="Int32" />
        </UpdateParameters>
        <InsertParameters>
            <asp:Parameter Name="Title" Type="String" />
            <asp:Parameter Name="Description" Type="String" />
            <asp:Parameter Name="DateCreated" Type="DateTime" />
            <asp:Parameter Name="DateExpiration" Type="DateTime" />
            <asp:Parameter Name="CreatedBy" Type="Int32" />
            <asp:Parameter Name="StateId" Type="Int32" />
        </InsertParameters>
</asp:SqlDataSource>

<asp:SqlDataSource ID="sdsState" runat="server" 
ConnectionString="<%$ ConnectionStrings:TaskOrganizerDBConnectionString2 %>" 
SelectCommand="SELECT StateId AS StateID, State FROM States">
</asp:SqlDataSource>    

    <asp:FormView ID="FormView1" runat="server" DataKeyNames="RequestId" 
    DataSourceID="SqlDataSource1" DefaultMode="Insert">
        <EditItemTemplate>
            RequestId:
            <asp:Label ID="RequestIdLabel1" runat="server" 
                Text='<%# Eval("RequestId") %>' />
            <br />
            Title:
            <asp:TextBox ID="TitleTextBox" runat="server" Text='<%# Bind("Title") %>' />
            <br />
            Description:
            <asp:TextBox ID="DescriptionTextBox" runat="server" 
                Text='<%# Bind("Description") %>' />
            <br />
            DateCreated:
            <asp:TextBox ID="DateCreatedTextBox" runat="server" 
                Text='<%# Bind("DateCreated") %>' />
            <br />
            DateExpiration:
            <asp:TextBox ID="DateExpirationTextBox" runat="server" 
                Text='<%# Bind("DateExpiration") %>' />
            <br />
            CreatedBy:
            <asp:TextBox ID="CreatedByTextBox" runat="server" 
                Text='<%# Bind("CreatedBy") %>' />
            <br />
            StateId:
            <asp:TextBox ID="StateIdTextBox" runat="server" Text='<%# Bind("StateId") %>' />
            <br />
            <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
                CommandName="Update" Text="Update" />
            &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" 
                CausesValidation="False" CommandName="Cancel" Text="Cancel" />
        </EditItemTemplate>

        <InsertItemTemplate>
        
            <table>

                <tr>
                    <td>Titulek: </td>
                    <td><asp:TextBox ID="TitleTextBox" runat="server" Text='<%# Bind("Title") %>' /></td>
                </tr>
                <tr>
                    <td>Popis: </td>
                    <td><asp:TextBox ID="DescriptionTextBox" runat="server" Text='<%# Bind("Description") %>' /></td>
                </tr>

                <tr>
                    <td>Datum ukončení: </td>
                    <td><asp:TextBox ID="DateExpirationTextBox" runat="server" Text='<%# Bind("DateExpiration") %>' /></td>
                </tr>
                <tr>
                    <td>Vytvořeno: </td>
                    <td><asp:TextBox ID="CreatedByTextBox" runat="server" Text='<%# Bind("CreatedBy") %>' /></td>
                </tr>
                <tr>
                    <td>Stav: </td>
                    <td>
                    <asp:DropDownList ID="ddlState"  runat="server" DataSourceID="sdsState" DataTextField="State" 
                        DataValueField="StateID" SelectedValue='<%# Bind("StateId") %>' >
                    </asp:DropDownList>
                    </td>
                    
                    <!--<td><asp:TextBox ID="StateIdTextBox" runat="server" Text='<%# Bind("StateId") %>' /></td>-->
                </tr>
                <tr>
                    <td>Vypracovává: </td>
                    <td><asp:TextBox ID="UserIdTextBox" runat="server" Text='<%# Bind("UserId") %>' /></td>
                </tr>

            </table>

            <asp:Button ID="InsertButton" runat="server" CausesValidation="True" 
                CommandName="Insert" Text="Vložit" />
            &nbsp;<asp:Button ID="InsertCancelButton" runat="server" 
                CausesValidation="False" CommandName="Cancel" Text="Zrušit" />
        </InsertItemTemplate>

 

    </asp:FormView>
</asp:Content>


 
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: DropDownList

Datum: 31.8.2010 21:20
Autor: Ondřej Brožek
Hodnocení autora: 83
Příspěvků: 167
Zkuste pouzit udalost ItemInserting.


protected void FormView_ItemInserting(object sender, ListViewInsertEventArgs e)
{
  DropDownList ddl = e.Item.FindControl("ddlState") as DropDownList;

     if (ddl != null) 
     {
          e.Values["StateId"] = (Convert.ToInt32(ddl.SelectedValue));
      }

  }
 
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: DropDownList

Datum: 31.8.2010 22:05
Autor: neregistrovaný (88.83.174.45)
Hodnocení autora: není
Příspěvků: 0
porad ten samy error
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: DropDownList

Datum: 1.9.2010 15:58
Autor: Jan Nepraš
Hodnocení autora: 0
Příspěvků: 5
Tak to nepomohlo.. Nasel jsem tady podobný clanek a postupoval jsem podle nej ale nepomohla, zadna rada.. http://www.vbnet.cz/forum-tema--3315-dro...

Uz fakt nevim co dal. Nastavil jsem autoPostBack, zkusil jsem prepsat InsertCommand, podle clanku.. nefunguje to ani, kdyz tam zkusim dat ListBox.

To vypada, ze se hodnota nabinduje do parametru, ale uz se dal neodesle, protoze kdyz jsem tam omylem nazvy tech stavu, tak to hodilo, ze to chce int. A kdyz uz by to melo jit, tak to pokazdy hodi, ze atribut StateId nesmi byt prazdny. Nenapada nekoho neco?
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: DropDownList

Datum: 1.9.2010 16:23
Autor: František Hůle
Hodnocení autora: 19
Příspěvků: 67
Když jste vložil dropdownlist místo textboxu, je třeba v SQLDatasource také změnit typ aspparametru takto:

<asp:ControlParameter Name="stateID"  ControlID="FormView1$ddlState" Type="String" />
 
a to samozřejmě jak v Updateparameters tak Insertparameters. Pak by už neměl být problém.
To ControlID nemůže být jen "ddlState", protože je uvnitř "formview1"

http://bytes.com/topic/asp-net/answers/6...

Snad to pomůže.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Příspěvek odpovídá na otázku Re: DropDownList

Datum: 1.9.2010 16:47
Autor: František Hůle
Hodnocení autora: 19
Příspěvků: 67
Ještě upřesňuji

<asp:ControlParameter Name="stateID"  ControlID="FormView1$ddlState" Type="String" 
              PropertyName="selectedindex"/>
 
aby z dropdownlistu bral index, nikoli text
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: DropDownList

Datum: 1.9.2010 16:53
Autor: Jan Nepraš
Hodnocení autora: 0
Příspěvků: 5
uz to funguje dekuji moc.. mohl by mi jeste nekdo vysvetlit proc je to tak??
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...
 

VBNET.CZ | © 2007 Tomáš Herceg, Tomáš Jecha | Kopírování a přejímání jakéhokoliv obsahu z tohoto webu je bez písemného svolení autorů zakázáno.