0

簡単な質問があります。ストアド プロシージャから ID を入力しようとしている dropDownList があります。しかし、うまくいかないようです。これは私のドロップダウンリストです:

 <div id="newExpenseTypeDialog" style="display:none;">
        <label>Select new CaseFile:</label>
        <asp:DropDownList runat="server" ID="ddlCaseFiles" DataSourceID="dsMyCaseFiles" DataTextField="Display" DataValueField="FileID" OnPreRender="ddl_PreRender" Width="524px" />
</div>

そして、これは私のデータソースです:

<asp:SqlDataSource ID="dsMyCaseFiles" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="System.Data.SqlClient" SelectCommand="p_CaseFiles_ListActiveCaseFilesAssignedTo" SelectCommandType="StoredProcedure">
    <SelectParameters>
        <asp:SessionParameter Name="InvestigatorID" SessionField="InvestigatorID" />
        <asp:SessionParameter Name="AssignedTo" SessionField="InvestigatorID" />
    </SelectParameters>
</asp:SqlDataSource>

私のストアド プロシージャには 2 つのパラメーターが必要です。InvestigatorID と AssignedTo。次に、一致するすべての FileID を返します。

これが私の.aspx.csサイドコードです:(Page_load)

if (Request.QueryString["ExpenseID"] != null)
    {
        if (!IsPostBack)
        {
            ddlCaseFiles.DataSourceID = "dsCaseFiles";
            ddlCaseFiles.DataTextField = "Display";
            ddlCaseFiles.DataValueField = "FileID";
        }
    }

と私の Pre_Render:

protected void ddl_PreRender(object sender, EventArgs e)
{
    DropDownList ddl = (DropDownList)sender;
    try
    {
        if (ddl.Items[0].Value != "-1")
            ddl.Items.Insert(0, new ListItem("--Select--", "-1"));
    }
    catch
    {
        ddl.Items.Insert(0, new ListItem("--Select--", "-1"));
    }
}

リストには pre_render が機能していますが、ストアドプロシージャからのデータがありません。

4

2 に答える 2

1

DataBind メソッドを呼び出すのを忘れているだけだと思います

ddlCaseFiles.DataBind();

その3行の後のif(!ispostback)ブロック

于 2012-09-20T14:46:11.273 に答える
1

ドロップダウン リストをまだバインドしていません

if (Request.QueryString["ExpenseID"] != null)
{
    if (!IsPostBack)
    {
        ddlCaseFiles.DataSourceID = "dsCaseFiles";
        ddlCaseFiles.DataTextField = "Display";
        ddlCaseFiles.DataValueField = "FileID";
        ddlCaseFiles.DataBind();  //You need to Bind it here
    }
}

これがあなたを助けることを願っています

于 2012-09-20T15:14:58.283 に答える