0

DropDownList を使用して INSERT の選択を制限しようとしていますが、TextBox はすべて正しく機能しますが、同様の方法で DropDownList を使用する方法がわかりません。

ここに私の現在のコードビハインドがあります:

private void _subInsert(RepeaterCommandEventArgs e)
{
    TextBox txtPostTitle = (TextBox)e.Item.FindControl("txt_post_titleI"); // Find the control with the information you wish to store
    TextBox txtPostBody = (TextBox)e.Item.FindControl("txt_post_bodyI");
    TextBox txtPostAuthor = (TextBox)e.Item.FindControl("txt_post_authorI");
    DropDownList ddlPostType = (DropDownList)e.Item.FindControl("ddl_post_typeI");

    sds_main.InsertParameters["post_title"].DefaultValue = txtPostTitle.Text; // Insert information into this location in the DB
    sds_main.InsertParameters["post_body"].DefaultValue = txtPostBody.Text;
    sds_main.InsertParameters["post_author"].DefaultValue = txtPostAuthor.Text;
    sds_main.InsertParameters["post_type"].DefaultValue = ddlPostType.SelectedValue.ToString();

    sds_main.Insert(); // Perform Insert
}

TextBoxes はすべて正しく挿入されますが、DropDownList では挿入で SelectedValue を使用できません。「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。エラー。

これは、プレゼンテーション ページの SQLDataSource コントロールのコードです。

    <asp:SqlDataSource
    id="sds_main"
    runat="server" 
        ConnectionString="<%$ ConnectionStrings:fntn0070DBConnectionString %>" 
        SelectCommand="SELECT * FROM [blogTest]" 
        DeleteCommand="DELETE FROM [blogTest] WHERE [id] = @id" 
        InsertCommand="INSERT INTO [blogTest] ([post_title], [post_body], [post_author], [post_type]) VALUES (@post_title, @post_body, @post_author, @post_type)" 

        UpdateCommand="UPDATE [blogTest] SET [post_title] = @post_title, [post_body] = @post_body, [post_author] = @post_author, [post_type] = @post_type WHERE [id] = @id" >
    <DeleteParameters>
        <asp:Parameter Name="id" Type="Int32" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="post_title" Type="String" />
        <asp:Parameter Name="post_body" Type="String" />
        <asp:Parameter Name="post_date" Type="String" />
        <asp:Parameter Name="post_author" Type="String" />
        <asp:Parameter Name="post_type" Type="String" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="post_title" Type="String" />
        <asp:Parameter Name="post_body" Type="String" />
        <asp:Parameter Name="post_author" Type="String" />
        <asp:Parameter Name="post_type" Type="String" />
        <asp:Parameter Name="id" Type="Int32" />
    </UpdateParameters>
    </asp:SqlDataSource>

そして、これはプレゼンテーション ページの私の DDL です。

<asp:DropDownList ID="ddl_postTypeI" runat="server">
    <asp:ListItem>Web Development</asp:ListItem>
    <asp:ListItem>Photography</asp:ListItem>
    <asp:ListItem>Other</asp:ListItem>
</asp:DropDownList>

Google と StackOverflow でこの問題を検索するために最善を尽くしましたが、データを DDL にバインドする方法に関する情報しか見つけることができませんでした。

私は ASP.NET 4 に非常に慣れていないので、Web 開発コースで学び始めたばかりなので、回答できる場合は ELI5 に連絡してください。あなたが提供できる助けを前もって感謝します。

4

1 に答える 1

0

ドロップダウンリストの値を指定せずに直接使用することはできません。

これを試して

    <asp:DropDownList ID="ddl_postTypeI" runat="server">
    <asp:ListItem Value="Web Development">Web Development</asp:ListItem>
    <asp:ListItem Value="Photography">Photography</asp:ListItem>
    <asp:ListItem Value="Other">Other</asp:ListItem>
</asp:DropDownList>

次に、 data に挿入しようとします。整数値を渡す場合は、 value="1" を使用します。そうしないと、エラーがスローされます。

ありがとう、

于 2012-11-17T04:03:37.417 に答える