【问题标题】:Data doesn't get updated when an item is chosen from drop down list从下拉列表中选择项目时数据不会更新
【发布时间】:2013-10-23 11:44:16
【问题描述】:

我想问你是否可以帮助我处理我的代码,因为我没有得到想要的结果,即从下拉列表中加载特定论文的详细信息。

目前,当页面加载时,将加载所选项目的详细信息。但是当我尝试从下拉列表中选择另一个项目时,相应的详细信息将不会显示,前一个仍然存在。

在下拉列表的属性下,我还将autopostback设置为yes,这样它就会自动加载所选项目的相应详细信息。

请看下面的代码

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GetPaper();
        GetInk();

        GetPaperDetails(ddlPaperName.SelectedItem.Value);
        //pnlPrinting.Visible = true;
    }
}
protected void btnCompute_Click(object sender, EventArgs e)
{

}
protected void btnCancel_Click(object sender, EventArgs e)
{

}

private void GetPaper()
{
    con.Open();
    SqlCommand com = new SqlCommand();
    com.Connection = con;
    com.CommandType = CommandType.Text;
    com.CommandText =
        "SELECT * FROM Papers";

    SqlDataReader data = com.ExecuteReader();

    ddlPaperName.DataSource = data;
    ddlPaperName.DataValueField = "PaperID";
    ddlPaperName.DataTextField = "PaperName";
    ddlPaperName.DataBind();

    data.Close();
    con.Close();     
}

private void GetPaperDetails(string paper)
{
    con.Open();
    SqlCommand com = new SqlCommand();
    com.Connection = con;
    com.CommandType = CommandType.Text;
    com.CommandText =
        "SELECT * FROM Papers WHERE PaperID=" + paper;

    SqlDataReader data = com.ExecuteReader();

    while (data.Read())
    {
        lblPaperPrice.Text = data["PaperPrice"].ToString();
        lblDescription.Text = data["PaperDescription"].ToString();
        lblSpecification.Text = data["PaperSpecification"].ToString();
        imgPaper.ImageUrl = "../" + data["PaperImage"].ToString();
    }
    data.Close();
    con.Close();
}


private void GetInk()
{
    con.Open();
    SqlCommand com = new SqlCommand();
    com.Connection = con;
    com.CommandType = CommandType.Text;
    com.CommandText =
        "SELECT * FROM Inks";

    SqlDataReader data = com.ExecuteReader();

    ddlPaperName.DataSource = data;
    ddlPaperName.DataValueField = "InkID";
    ddlPaperName.DataTextField = "InkName";
    ddlPaperName.DataBind();

    while (data.Read())
    {
        lblInkPrice.Text = data["InkPrice"].ToString();
    }
    data.Close();
    con.Close();
}
protected void ddlPaperName_SelectedIndexChanged(object sender, EventArgs e)
{
        GetPaperDetails(ddlPaperName.SelectedItem.Value);
}

在这里期待您的反馈。谢谢!

【问题讨论】:

  • 调试你的程序,你会很容易发现问题:)
  • 你 DropDownList 的默认 selectedValue 是多少?
  • 默认值为 1(PaperID),对应于该产品 ID 的纸张名称。

标签: c# asp.net html-select ispostback


【解决方案1】:

将下拉列表的 AutoPostBack 属性设置为 true。

【讨论】:

  • 嗨,autopostback 已经设置为 true :-( 这就是我在上面描述中的意思,“autopostback 设置为 yes”
【解决方案2】:

为此,我们使用这段代码,

 if (!IsPostBack == true)
            {

                drpdownaccountnamebind();
                drpdowncountrynamebind();

            }

我希望这会有所帮助,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多