1

ここに画像の説明を入力

リストからいくつかのデータを値でバインド (選択) しようとしていますが、それはできません。

ご覧のとおり、次の値で保存します。

DataValueField="ID_PROJECT_TYPE_DETAILS"

次のhtmlコードがあります。

<asp:ListBox SelectionMode="Multiple" ID="DDLProjectDetails" runat="server" 
                        DataSourceID="SqlDataSource4" DataTextField="DESCRIPTION" 
                        DataValueField="ID_PROJECT_TYPE_DETAILS">
                                    </asp:ListBox>

                    <script type="text/javascript">
                        $(document).ready(function () {
                            $('#<%= DDLProjectDetails.ClientID %>').dropdownchecklist({ width: 248 });
                        });
                    </script>

                    <asp:SqlDataSource ID="SqlDataSource4" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:MesarchConnectionString %>" 
                        SelectCommand="SELECT * FROM [PROJECT_TYPE_DETAILS]"></asp:SqlDataSource>

およびコードの背後にあるコード:

string insCmd = "SELECT ID_PROJECT, ID_PROJECT_TYPE_DETAILS FROM PROJECT_TYPE_DETAILS_OF_PROJECT WHERE ID_PROJECT = @IDProject";

...

 dr = com.ExecuteReader();
            while (dr.Read())
            {
                if (DDLProjectDetails.Items.Contains(DDLProjectDetails.Items.FindByValue(dr.GetInt32(1).ToString()))) 
                    DDLProjectDetails.Items.FindByValue(dr.GetInt32(1).ToString()).Selected = true;
            }

次のように私のドロップダウンチェックリストを埋めません: ここに画像の説明を入力

プログラムを実行すると、私の DDLProjectDetails には項目が表示されません...

4

1 に答える 1

1

DDLProjectDetails のアイテム コレクションはまだデータ バインドされていません。あなたがしなければならないのはDataBind()を呼び出すことだけで、あなたのコードがExecuteReader() ...Item に来るときにすでにバインドされています。

// demo code for one of my tables
string conStr = YOUR_CON_STR;
using (SqlConnection con = new SqlConnection(conStr))
{
    SqlCommand com = new SqlCommand("SELECT [idBenutzer], [benutzerName], [aktiv] FROM [Benutzer]", con);
    con.Open();
    SqlDataReader rdr = com.ExecuteReader();

    DropDownList1.DataBind(); // NECESSARY
    while (rdr.Read())
    {
        Debug.WriteLine(rdr.GetInt32(0) + " " + rdr.GetString(1) + " " + rdr.GetBoolean(2));
        if (DropDownList1.Items.Contains(DropDownList1.Items.FindByValue(rdr.GetInt32(0).ToString())))
        {/* do anything */ }
    }
}
于 2012-09-20T20:32:54.797 に答える