从存储过程填充gridview的问题

时间:2011-07-19 02:21:27

标签: c# asp.net

我有一个Gridview,我从一个存储过程中填充,它接受3个参数。第一个参数从表单变量Request.Form [“uid”]获取其值,第二个和第三个参数从DropDownLists SelectedValue属性获取其值。如果从DropDownLists中未选择任何内容,则第二个和第三个参数应接受NULL。我还将参数的ConvertEmptyStringToNull属性设置为true。 Gridview仍然没有填充。但是当我手动传递参数并从SQL Server Management Studio以及Visual Studio的测试查询窗口执行存储过程时,它可以正常工作。

Gridview的SQLDataSource如下所示:

<asp:SqlDataSource ID="SqlGVDownloadHistory" CancelSelectOnNullParameter="false" runat="server" ConnectionString="<%$ ConnectionStrings:xxx %>"
            SelectCommand="spDHR" SelectCommandType="StoredProcedure">
            <SelectParameters>
                <asp:FormParameter FormField="uid" Name="UIDUser" Type="String" />
                <asp:ControlParameter ControlID="ddlSelectDocument" Name="FileName"
                    PropertyName="SelectedValue" Type="String" ConvertEmptyStringToNull="true" />
                <asp:ControlParameter ControlID="ddlSelectCCO" Name="UIDSelect" PropertyName="SelectedValue"
                    Type="String" ConvertEmptyStringToNull="true" />
            </SelectParameters>
        </asp:SqlDataSource>

请帮助!!

2 个答案:

答案 0 :(得分:0)

尝试将存储过程中两个输入参数的默认值设置为null。

答案 1 :(得分:0)

试试这个。

<asp:SqlDataSource ID="SqlGVDownloadHistory" runat="server" 
            ConnectionString="<%$ ConnectionStrings:xxx %>" 
            SelectCommand="spDHR"
            SelectCommandType="StoredProcedure" 
            OnSelecting="SqlGVDownloadHistory_Selecting">
    <SelectParameters>
        <asp:FormParameter FormField="uid" Name="UIDUser" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

关于Code Behind

protected void SqlGVDownloadHistory_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    SqlGVDownloadHistory.SelectParameters.Remove("FileName");
    SqlGVDownloadHistory.SelectParameters.Remove("UIDSelect");
    if (ddlSelectDocument.SelectedIndex > 0)
    {
        SqlGVDownloadHistory.SelectParameters.Add("FileName", ddlSelectDocument.SelectedValue);
    }
    if (ddlSelectCCO.SelectedIndex > 0)
    {
        SqlGVDownloadHistory.SelectParameters.Add("UIDSelect", ddlSelectCCO.SelectedValue);
    }
}

想法是在数据检索操作发生之前设置参数。

根据MSDN documentation on COntrolParameters,我没有看到asp:DropDownList Selectedvalue被设置为ControlValuePropertyAttribute