Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将控件参数从asp控件移动到C代码隐藏文件?_C#_Asp.net_Code Behind - Fatal编程技术网

C# 如何将控件参数从asp控件移动到C代码隐藏文件?

C# 如何将控件参数从asp控件移动到C代码隐藏文件?,c#,asp.net,code-behind,C#,Asp.net,Code Behind,我正在清理ASP.NET webapp中的一堆旧代码,其中有一组ASP控制参数我想移到C codebehind文件中,但当我尝试仅在C文件中添加控制参数时,我不断收到一个错误 这就是我想做的: <asp:SqlDataSource ID="ProviderSearchGridViewDataSource" runat="server"> <SelectParameters> <asp:ControlParameter ControlID="t

我正在清理ASP.NET webapp中的一堆旧代码,其中有一组ASP控制参数我想移到C codebehind文件中,但当我尝试仅在C文件中添加控制参数时,我不断收到一个错误

这就是我想做的:

<asp:SqlDataSource ID="ProviderSearchGridViewDataSource" runat="server">
    <SelectParameters>
        <asp:ControlParameter ControlID="tbProvider" DefaultValue="%" Name="provider" 
            PropertyName="Text" />
    </SelectParameters>
</asp:SqlDataSource>
然后,使用以下代码将该代码用作ascx文件上存在的gridview的数据源:

        ProviderSearchGridView.DataSource = ProviderSearchGridViewDataSource;

        ProviderSearchGridView.DataBind();
从asp文件中删除select参数后,仅使用C代码隐藏,在尝试数据绑定ProviderSearchGridView时,我会出现此错误:

Additional information: The SqlDataSource control '' does not have a naming container.  Ensure that the control is added to the page before calling DataBind.
当控制参数在ascx文件中定义,而不是在C文件中定义时,我没有得到那个错误。我做错了什么?

尝试添加:

ProviderSearchGridViewDataSource.ID = "ProviderSearchGridViewDataSource";
之后

所以它应该看起来像:

SqlDataSource ProviderSearchGridViewDataSource = new SqlDataSource();
ProviderSearchGridViewDataSource.ID = "ProviderSearchGridViewDataSource";

在这里,您可能会发现与您所做的类似的解释。

这是我用来解决问题的完整代码:

    protected void SearchButtonClick(object sender, EventArgs e)
    {
        try
        {
            DataSet tProviderData = SelectProviderWithParameter();
            cProviderSearchGridView.DataSource = tProviderData;

            cProviderSearchGridView.Visible = true;
            cProviderSearchGridView.DataBind();

            if (cProviderSearchGridView.Rows.Count == 0)
            {
                cSearchMessageLabel.Text = "No results found. Please modify your search and try again.";
                cSearchMessageLabel.Visible = true;
            }
            else
            {
                cSearchMessageLabel.Visible = false;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private DataSet SelectProviderWithParameter()
    {
        DataSet tProviderData = new DataSet();

        string tProviderTextboxContent = tbProvider.Text.Trim();
        string tCityDropDownSelection = cCityDropDownList.SelectedValue.ToString().Trim();
        string tPracticeGroupDropDownSelection = cProviderDropDownList.SelectedValue.ToString().Trim();
        string tSpecialtyDropDownSelection = cSpecialtyDropDownList.SelectedValue.ToString().Trim();
        string tZipTextboxContent = tbZip.Text.Trim();
        string tProviderContractAreaDropDownSelection = cContractAreaDropDownList.SelectedValue.ToString().Trim();

        using (SqlConnection tProviderConnection = new SqlConnection(DatabaseConnectionString))
        {
            using (SqlDataAdapter tProviderAdapter = new SqlDataAdapter())
            {
                try
                {
                    tProviderConnection.Open();

                    SqlCommand tProviderSearch = new SqlCommand("dbo.SearchProvider", tProviderConnection);
                    tProviderSearch.CommandType = CommandType.StoredProcedure;

                    tProviderSearch.Parameters.AddWithValue("Provider", tProviderTextboxContent);
                    tProviderSearch.Parameters.AddWithValue("ProviderCity", tCityDropDownSelection);
                    tProviderSearch.Parameters.AddWithValue("ProviderPracticeGroup", tPracticeGroupDropDownSelection);
                    tProviderSearch.Parameters.AddWithValue("ProviderSpecialty", tSpecialtyDropDownSelection);
                    tProviderSearch.Parameters.AddWithValue("ProviderZipCode", tZipTextboxContent);
                    tProviderSearch.Parameters.AddWithValue("ProviderContractArea", tProviderTextboxContent);

                    tProviderAdapter.SelectCommand = tProviderSearch;
                    tProviderAdapter.Fill(tProviderData);

                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }

        return tProviderData;
    }
我试图解决的问题的重要部分是以下几行:

tProviderSearch.Parameters.AddWithValue("Provider", tProviderTextboxContent);
tProviderSearch.Parameters.AddWithValue("ProviderCity", tCityDropDownSelection);
tProviderSearch.Parameters.AddWithValue("ProviderPracticeGroup", tPracticeGroupDropDownSelection);
tProviderSearch.Parameters.AddWithValue("ProviderSpecialty", tSpecialtyDropDownSelection);
tProviderSearch.Parameters.AddWithValue("ProviderZipCode", tZipTextboxContent);
tProviderSearch.Parameters.AddWithValue("ProviderContractArea", tProviderTextboxContent);

构造SqlCommand对象后,就可以访问其Parameters属性,并在适配器执行搜索之前添加参数。在我的代码中,我只是直接从查询生成器的表单字段中提取了值。

也许ProviderSearchGridViewDataSource在数据绑定之前超出了范围?尝试将成员变量用作SqlDataSource而不是局部变量。ProviderSearchGridView是否仍定义了DataSourceID?@Malk,否定,它是一个空字符串。@Mausimo我正在检查范围和名称冲突问题,但它看起来没有超出范围。完全删除该属性。
    protected void SearchButtonClick(object sender, EventArgs e)
    {
        try
        {
            DataSet tProviderData = SelectProviderWithParameter();
            cProviderSearchGridView.DataSource = tProviderData;

            cProviderSearchGridView.Visible = true;
            cProviderSearchGridView.DataBind();

            if (cProviderSearchGridView.Rows.Count == 0)
            {
                cSearchMessageLabel.Text = "No results found. Please modify your search and try again.";
                cSearchMessageLabel.Visible = true;
            }
            else
            {
                cSearchMessageLabel.Visible = false;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private DataSet SelectProviderWithParameter()
    {
        DataSet tProviderData = new DataSet();

        string tProviderTextboxContent = tbProvider.Text.Trim();
        string tCityDropDownSelection = cCityDropDownList.SelectedValue.ToString().Trim();
        string tPracticeGroupDropDownSelection = cProviderDropDownList.SelectedValue.ToString().Trim();
        string tSpecialtyDropDownSelection = cSpecialtyDropDownList.SelectedValue.ToString().Trim();
        string tZipTextboxContent = tbZip.Text.Trim();
        string tProviderContractAreaDropDownSelection = cContractAreaDropDownList.SelectedValue.ToString().Trim();

        using (SqlConnection tProviderConnection = new SqlConnection(DatabaseConnectionString))
        {
            using (SqlDataAdapter tProviderAdapter = new SqlDataAdapter())
            {
                try
                {
                    tProviderConnection.Open();

                    SqlCommand tProviderSearch = new SqlCommand("dbo.SearchProvider", tProviderConnection);
                    tProviderSearch.CommandType = CommandType.StoredProcedure;

                    tProviderSearch.Parameters.AddWithValue("Provider", tProviderTextboxContent);
                    tProviderSearch.Parameters.AddWithValue("ProviderCity", tCityDropDownSelection);
                    tProviderSearch.Parameters.AddWithValue("ProviderPracticeGroup", tPracticeGroupDropDownSelection);
                    tProviderSearch.Parameters.AddWithValue("ProviderSpecialty", tSpecialtyDropDownSelection);
                    tProviderSearch.Parameters.AddWithValue("ProviderZipCode", tZipTextboxContent);
                    tProviderSearch.Parameters.AddWithValue("ProviderContractArea", tProviderTextboxContent);

                    tProviderAdapter.SelectCommand = tProviderSearch;
                    tProviderAdapter.Fill(tProviderData);

                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }

        return tProviderData;
    }
tProviderSearch.Parameters.AddWithValue("Provider", tProviderTextboxContent);
tProviderSearch.Parameters.AddWithValue("ProviderCity", tCityDropDownSelection);
tProviderSearch.Parameters.AddWithValue("ProviderPracticeGroup", tPracticeGroupDropDownSelection);
tProviderSearch.Parameters.AddWithValue("ProviderSpecialty", tSpecialtyDropDownSelection);
tProviderSearch.Parameters.AddWithValue("ProviderZipCode", tZipTextboxContent);
tProviderSearch.Parameters.AddWithValue("ProviderContractArea", tProviderTextboxContent);