【问题标题】:Hiding dropdownlist in templatefield in gridview asp.net C# after insert into the database插入数据库后,在gridview asp.net C#的模板字段中隐藏下拉列表
【发布时间】:2014-11-19 12:49:20
【问题描述】:

我有一个问题,我想在从下拉列表中提取值后,插入数据库我希望它隐藏下拉列表并只显示用户评价的产品等级,如下面两张图:

这是第一张显示用户需要如何将等级插入产品数据库的图片:

之后的结果应该如下:

现在对产品进行评分的用户应该看不到下拉列表。我尝试使用 RowDataBound 事件和以下代码:

  if (e.Row.RowType == DataControlRowType.DataRow)
            {
        hsp_Narudzbe_Detalji_Result k = (hsp_Narudzbe_Detalji_Result)e.Row.DataItem;
                if (k.Ocjena!=null)
                {
                    e.Row.Cells[4].Text = k.ocjena;
                }
            }

但它不起作用,它只显示一次等级,当我按下产品等级的按钮时,下拉列表又回来了......:/

有人可以帮我解决这个问题吗?

编辑(页面的aspx代码):

<asp:GridView ID="gridDetaljiNarudzbe" AutoGenerateColumns="false" AllowPaging="true" PageSize="10" runat="server" OnRowCommand="gridDetaljiNarudzbe_RowCommand" OnPageIndexChanging="gridDetaljiNarudzbe_PageIndexChanging" OnRowDataBound="gridDetaljiNarudzbe_RowDataBound">
        <Columns>
           <asp:BoundField DataField="Naziv" HeaderText="Naziv" />
           <asp:BoundField DataField="Sifra" HeaderText="Šifra" />
           <asp:BoundField DataField="Cijena" HeaderText="Cijena" />
           <asp:BoundField DataField="Kolicina" HeaderText="Količina" />
                <asp:TemplateField HeaderText="Ocjena">
                <ItemTemplate>
                    <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
          <asp:TemplateField>
              <ItemTemplate> 
                   <asp:LinkButton ID="btnOcijeni" title="Ocijeni proizvod" CommandName="OcijeniCommand" CommandArgument='<%#Eval("ProizvodID") + ";" +((GridViewRow) Container).RowIndex%>' runat="server"><img src="../images/ocijeni.png" /></asp:LinkButton>
              </ItemTemplate>
          </asp:TemplateField>
        </Columns>
    </asp:GridView>

成绩是这样加载的:

 if (e.Row.RowType == DataControlRowType.DataRow)
            {
                DropDownList drop = e.Row.FindControl("DropDownList1") as DropDownList;
                drop.Items.Add(new ListItem(""));
                drop.Items.Add(new ListItem("1"));
                drop.Items.Add(new ListItem("2"));
                drop.Items.Add(new ListItem("3"));
                drop.Items.Add(new ListItem("4"));
                drop.Items.Add(new ListItem("5"));
            }

【问题讨论】:

  • 你能告诉我们你的aspx代码吗?
  • 是的,我已经编辑了第一篇文章。

标签: c# asp.net gridview visible rowdatabound


【解决方案1】:

试试这样的,

     protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DropDownList ddl = e.Row.Cells[4].FindControl("DropDownList2") as DropDownList;
        if (ddl != null)
        {
            // if (your_condition == true)
            //{
                    ddl .Visible = false;

            //}

        }
    }
}

【讨论】:

  • 不幸的是,我认为这行不通,因为我没有从 DB 本身加载等级(从 1 到 5),我实际上是从 rowdatabound 事件中加载它们,就像我展示的示例一样在我现在编辑的第一篇文章中。你能在第一篇文章中看到它吗?
【解决方案2】:

嗨,让您的项目模板如下所示:

<ItemTemplate>
                <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
                 <asp:Label ID="gvlblddlVal" runat="server" Text='<%#((YourEntityClassName)Container.DataItem).ddlVal %>'></asp:Label>
            </ItemTemplate>

之后

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
    DropDownList ddl = e.Row.Cells[4].FindControl("DropDownList2") as DropDownList;
    Label lblddl = e.Row.Cells[4].FindControl("gvlblddlVal") as Label;
    if (!string.IsNullOrEmpty(lblddl.Text))
    {            
                ddl.Visible = false;
                lblddl.Visible = true;           
    }
    else
    {
                ddl.Visible = true;
                lblddl.Visible =false; 
     }
  }
}

希望对你有帮助

【讨论】:

  • 编辑:当我没有成绩时,它现在根本不显示我的网格??会是什么?
  • 请解释您的问题,您的网格是否不可见或使用编辑模板时单元格内容不可见。
  • 是的,当我按照您向我展示的方式编辑模板并输入您发布的代码时,您发布的网格现在根本不可见...如果产品尚未分级,则会发生这种情况分级,可见...
  • 不可见网格的执行步骤是什么。
  • 嗯,我有所有产品的等级输入到数据库中,它显示的只是标签,我从数据库中删除了等级以测试下拉列表是否会显示,那就是当整个网格消失了……
猜你喜欢
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多