【问题标题】:DropDownList not getting populated from Stored ProcedureDropDownList 未从存储过程中填充
【发布时间】:2012-09-20 23:14:58
【问题描述】:

我有一个简单的问题。我有一个 dropDownList,我试图从存储过程中填充 id。但是,它似乎不起作用。这是我的下拉列表:

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

我的存储过程需要两个参数。 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 工作正常,但没有,只是我的存储过程中没有数据。

【问题讨论】:

    标签: javascript asp.net stored-procedures


    【解决方案1】:

    我想你只是忘记调用 DataBind 方法

    ddlCaseFiles.DataBind();
    

    if(!ispostback) 后面那三行的块

    【讨论】:

    • 我会尝试并回复你
    • 似乎仍然没有填充它。它只有 pre_render 内容
    • @user1084319 - 你有没有在源程序中传递的会话变量是否有价值..
    • @user1084319 - 移除预渲染事件并检查其加载数据是否...移除 dll_PreRender 事件并检查
    【解决方案2】:

    你还没有绑定你的下拉列表

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-07-08
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      相关资源
      最近更新 更多