【问题标题】:set text to textbox based on selected value from dropdownlist in gridview asp net根据gridview asp net中下拉列表中的选定值将文本设置为文本框
【发布时间】:2015-06-04 09:30:51
【问题描述】:

我的网格视图中有一个下拉菜单和一个文本框。 gridview 包含一些主题名称,并且在数据库中有特定的费用 主题。我想在为下拉列表选择的每个值的文本框中显示该费用。

我已经完成了相同的功能,它给出了我想要的准确输出,但不是在选择主题后立即输出,它在按钮点击时给出了价值。

可能是我做错了什么,但没有找到确切的解决方案,请帮忙。

ASPX 代码:

<asp:GridView ID="Gridview1" runat="server" ShowFooter="true" AutoGenerateColumns="false" OnRowDataBound="Gridview1_RowDataBound" CssClass="EU_DataTable">
    <Columns>
        <asp:TemplateField HeaderText="Program Name">
            <ItemTemplate>
                <asp:DropDownList ID="ddl_ProgList" runat="server" AppendDataBoundItems="true" OnSelectedIndexChanged="ddl_ProgList_SelectedIndexChanged" ControlStyle-Width="160px">
                    <asp:ListItem Value="-1">Select</asp:ListItem>
                </asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>

       <asp:TemplateField HeaderText="Fees">
            <ItemTemplate>
                <asp:TextBox ID="txt_fees" runat="server" ControlStyle-Width="75px"></asp:TextBox>
            </ItemTemplate>
            <FooterStyle HorizontalAlign="Right" />
            <FooterTemplate>
                <asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" OnClick="ButtonAdd_Click" />
            </FooterTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

后面的代码:

protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        Control ctrl = e.Row.FindControl("ddl_ProgList");
        if (ctrl != null)
        {
            DropDownList dd = ctrl as DropDownList;

            //SqlConnection conn = new SqlConnection(connStr);

            clsProg_TB objprg = new clsProg_TB();
            objprg.Center_Code = ddl_centerCode.SelectedItem.ToString();
            DataSet ds = clsUserLogicLayer.LoadPrograms(objprg);
            dd.DataTextField = "prg_Name";
            dd.DataValueField = "prg_Name";
            dd.DataSource = ds.Tables[0];
            dd.DataBind();
        }
    }
}
protected void ddl_ProgList_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList ddl = sender as DropDownList;

    foreach (GridViewRow row in Gridview1.Rows)
    {

        Control ctrl = row.FindControl("ddl_ProgList") as DropDownList;
        if (ctrl != null)
        {
            DropDownList ddl1 = (DropDownList)ctrl;

            if (ddl.ClientID == ddl1.ClientID)
            {
                TextBox txt2 = row.FindControl("txt_fees") as TextBox;
                clsProg_TB objprg = new clsProg_TB();
                objprg.Center_Code = ddl_centerCode.SelectedItem.ToString();
                objprg.Prg_Name = ddl1.SelectedItem.ToString();
                DataSet ds = clsUserLogicLayer.getProgFees(objprg);
                if (ds.Tables[0].Rows.Count != 0)
                {
                    txt2.Text = ds.Tables[0].Rows[0][0].ToString(); 
                }
            }
        }
    }
}

【问题讨论】:

  • 你在使用更新面板然后更新它。
  • @AnilKumar 对不起,我不明白你
  • 您的网格视图是否在 UpdatePanel 中,如果是,则更新它?

标签: asp.net gridview


【解决方案1】:

您可以尝试更新 Row 并再次绑定 gridview。您还需要在开始编辑之前设置 GridView.SetEditRow()。另一种方法是更新您的 dataTable 并再次绑定它。

   protected void ddl_ProgList_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList ddl = sender as DropDownList;

    foreach (GridViewRow row in Gridview1.Rows)
    {
GridView.SetEditRow(row.RowIndex); 


        Control ctrl = row.FindControl("ddl_ProgList") as DropDownList;
        if (ctrl != null)
        {
            DropDownList ddl1 = (DropDownList)ctrl;

            if (ddl.ClientID == ddl1.ClientID)
            {
                TextBox txt2 = row.FindControl("txt_fees") as TextBox;
                clsProg_TB objprg = new clsProg_TB();
                objprg.Center_Code = ddl_centerCode.SelectedItem.ToString();
                objprg.Prg_Name = ddl1.SelectedItem.ToString();
                DataSet ds = clsUserLogicLayer.getProgFees(objprg);
                if (ds.Tables[0].Rows.Count != 0)
                {
                    txt2.Text = ds.Tables[0].Rows[0][0].ToString(); 
                }
            }
        }
         Gridview1.UpdateRow(row.RowIndex, false);
    }
Gridview1.DataBind();
}

【讨论】:

  • 它给出了错误:GridView 'Gridview1' 触发了未处理的事件 RowUpdating。而且对 selectedIndexChanged 事件也没有影响 ...
  • 尝试添加一个空白事件,因为您已经更新了控件;受保护的无效Gridview1_RowUpdating(对象发件人,GridViewUpdateEventArgs e){}
  • 能否帮助摆脱这两天以来我一直在苦苦挣扎的问题,我可以向您展示我的整个代码,可能在其他地方做错了吗???我想要的是从下拉列表中选择值和与该主题相关的费用将被检索并显示到文本框中..如果可以的话,请??
  • 感谢您的努力,但实际上是我的小错误,没有用户 AutoPostBack 属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
相关资源
最近更新 更多