【问题标题】:Handling empty databound dropdown list in ASP.Net处理 ASP.Net 中的空数据绑定下拉列表
【发布时间】:2012-07-14 14:00:53
【问题描述】:

我有一个包含以下表单字段的 asp.net 页面:

  1. 下拉菜单 1. 此下拉菜单通过 SQL 数据源接收数据。
  2. 下拉列表 2。根据下拉列表 1 的选择,此下拉列表使用 SQL 数据源查询数据库并被填充。
  3. 位于下拉列表 2 下方的面板控件,它具有一组控件。

我的问题是下拉2的数据源可能没有返回任何内容,我想在下拉列表2中显示一个“未找到数据”项,同时隐藏位于下拉列表2下方的面板.

有人可以告诉我如何处理这种情况。

感谢您的帮助。

谢谢, 夜叉

【问题讨论】:

  • 代码在哪里?你还没有发布任何代码
  • Sorry..forgot 添加我尝试以下代码的代码:protected void DropDown1_SelectedIndexChanged(object sender, EventArgs e) { if (Dropdown2.Items.Count == 0) { Panel1.Visible = false; Dropdown2.Items.Add("没有数据存在"); } }
  • 也将此代码添加到您的问题中。

标签: asp.net


【解决方案1】:

将以下代码添加到您的 dropdownlist1 选择的索引更改事件中。

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    // Run this code when your sql datasource 2 does not return record, you can also place an IfElse condition
    DataTable dt = new DataTable();
    dt.Columns.Add("ID");
    dt.Columns.Add("Value");
    DataRow row = dt.NewRow();
    row[0] = "-1";
    row[1] = "Data Not Found";
    dt.Rows.Add(row);
    DropDownList2.DataSource = dt;
    DropDownList2.DataTextField = "Value";
    DropDownList2.DataValueField = "ID";
    DropDownList2.DataBind();

}

更新答案:(试试这个) 您也可以将它放在您的 sqldatasource2 选择事件中。

protected void SqlDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    if (e.Arguments.TotalRowCount == 0)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("ID");
        dt.Columns.Add("Value");
        DataRow row = dt.NewRow();
        row[0] = "-1";
        row[1] = "Data Not Found";
        dt.Rows.Add(row);
        DropDownList2.DataSource = dt;
        DropDownList2.DataTextField = "Value";
        DropDownList2.DataValueField = "ID";
        DropDownList2.DataBind();
    }
}

上面的代码会将一个 Item 添加到您的下拉列表中,其中 Text = "Data Not Found"

【讨论】:

  • 我已使用以下代码通过 SQLDatasource 确定行数。我不确定如何按照您的建议调用以下函数。 protected void Y0079_dsGetDefectID_Selecting(object sender, SqlDataSourceStatusEventArgs e) { int affectedRecords = e.AffectedRows; }
  • if(e.Arguments.TotalRowCount == 0) { Y0090_pnlDefect.Visible = false;数据表 dt = 新数据表(); dt.Columns.Add("ID"); dt.Columns.Add("值");数据行行 = dt.NewRow();行[0] =“-1”; row[1] = "未找到数据"; dt.Rows.Add(行); Dropdown2.DataSource = dt; Dropdown2.DataTextField = "值"; Dropdown2.DataValueField = "ID"; Dropdown2.DataBind(); }
猜你喜欢
  • 2011-10-27
  • 2023-03-13
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多