【发布时间】:2014-04-08 08:34:18
【问题描述】:
我的页面中有 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();
}
【问题讨论】:
-
我不明白你的问题。请澄清。
-
请让我知道哪一部分?
-
没有看到你的代码的其余部分是不容易看到发生了什么......你插入的项目的文本是“--Select--”但是值是什么?您是否使用该值来填充您的网格视图?目前该值将是“--Select--”。那是您用来填充 Gridview 的东西吗... if (ddlGroup.SelectedValue.ToString() == "--Select--" ?
-
@karz - 用代码更新了我的帖子。