c# - 重置下拉值

标签 c# asp.net .net gridview

我的页面中有 3 个级联下拉菜单。默认情况下,在我所有下拉菜单的页面加载时,我有一个默认选项,如下所示

--Select--

因此,当用户尝试在下拉列表中选择此 -- Select-- 选项时,它会抛出错误。

错误信息:

Validation of viewstate MAC failed

我的页面中有一个 gridview,当我选择第一个下拉值时,gridview 会填充数据。当我选择第二个下拉值时,前两个下拉值的组合将填充到网格中。现在,当我在第二个下拉列表中选择此 --Select-- 选项时,gridview 显示找到 0 条记录,而不是显示第一个下拉值。此外,当我为第一个下拉菜单选择选项 --Select-- 时,它必须返回页面加载时发生的所有网格数据值。

ddlGroup.Items.Insert(0, "--Select--");

代码隐藏:

第一个下拉列表:

 protected void ddlDate_SelectedIndexChanged(object sender, EventArgs e)
{
        SqlConnection conn = new SqlConnection(strcon);
        conn.Open();
        string strQuery = "select distinct(Group) from Application where Date = '" + ddlDate.Text + "'";
        SqlCommand cmd = new SqlCommand(strQuery, conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        ddlGroup.DataSource = dt;
        ddlGroup.DataTextField = "Group";
        ddlGroup.DataBind();
        ddlGroup.Items.Insert(0, new ListItem("--Select--", "0"));
        conn.Close();
        ddlCode.Items.Clear();
        ddlCode.Items.Insert(0, new ListItem("--Select--", "0"));
        DataTable dtDate = DataRepository.GetDate(ddlDate.Text);
        gvDetails.DataSource = dtDate;
        gvDetails.DataBind();           
}

第二个下拉菜单

 protected void ddlGroup_SelectedIndexChanged(object sender, EventArgs e)
{
        SqlConnection conn = new SqlConnection(strcon);
        conn.Open();
        string strQuery = "select distinct(Code) from Application where Date = '" + ddlDate.Text + "' and Group='" + ddlGroup.Text + "'";
        SqlCommand cmd = new SqlCommand(strQuery, conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        ddlCode.DataSource = dt;
        ddlCode.DataTextField = "Code";
        ddlCode.DataBind();
        ddlCode.Items.Insert(0, new ListItem("--Select--", "0"));
        conn.Close();
        DataTable dtGroup = DataRepository.GetGroup(ddlDate.Text, ddlGroup.Text);
        gvDetails.DataSource = dtGroup;
        gvDetails.DataBind();                                  
}

第三个下拉列表:

protected void ddlCode_SelectedIndexChanged(object sender, EventArgs e)
{
    DataTable dtCode = DataRepository.GetCode(ddlDate.Text, ddlGroup.Text, ddlCode.Text);
    gvDetails.DataSource = dtCode;
    gvDetails.DataBind();        
}

最佳答案

绑定(bind)gridview前需要检查下拉值

每当您将所选值更改为 --SELECT-- 时,它都会调用 ddlGroup_SelectedIndexChanged 函数。

尝试:

     protected void ddlGroup_SelectedIndexChanged(object sender, EventArgs e)
    {
if(ddlGroup.Text!="--Select--")
{
            SqlConnection conn = new SqlConnection(strcon);
            conn.Open();
            string strQuery = "select distinct(Code) from Application where Date = '" + ddlDate.Text + "' and Group='" + ddlGroup.Text + "'";
            SqlCommand cmd = new SqlCommand(strQuery, conn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            ddlCode.DataSource = dt;
            ddlCode.DataTextField = "Code";
            ddlCode.DataBind();
            ddlCode.Items.Insert(0, new ListItem("--Select--", "0"));
            conn.Close();
            DataTable dtGroup = DataRepository.GetGroup(ddlDate.Text, ddlGroup.Text);
            gvDetails.DataSource = dtGroup;
            gvDetails.DataBind();
}

else
{
// call ddlDate_SelectedIndexChanged 
}                                  
    }

关于c# - 重置下拉值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22931710/

相关文章:

c# - 检测应用程序何时停止响应,将其终止并重新启动

C# 屏幕截图 winlogon 以及用户桌面

asp.net - 有哪些选项可用于在 ASP.NET MVC2 中存储应用程序设置?

c# - 自定义授权过滤最小 API .Net 6

java - 值得信赖的开发人员撰写有关 Java 和 .NET 的文章?

c# - 如何处理 xamarin 表单中的 "The GenerateResourceDesigner task failed unexpectedly"错误?

C# COM 服务器到 C# COM 客户端使用 CoCreateInstance

c# - 在不同机器上运行 .NET 应用程序

c# - 将 ASCII 字符数组转换为 UNICODE 字符串

asp.net - 将 webgrid 导出为 pdf asp mvc razor