1

問題があります。ドロップダウン リストの値が取得され、データベースに挿入された後、ドロップダウン リストを非表示にして、ユーザーが評価した製品のグレードのみを次の 2 つのように表示したいと思います。ピクチャー:

これは、ユーザーがグレードを製品のデータベースに挿入する方法を示す最初の図です。

ここに画像の説明を入力

後の結果は次のようになります。

ここに画像の説明を入力

ドロップダウンリストは、製品を評価したユーザーには表示されなくなりました。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"));
            }
4

2 に答える 2

2

このようなことを試してみてください。

     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;

            //}

        }
    }
}
于 2014-11-19T12:57:53.743 に答える
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; 
     }
  }
}

それが役に立てば幸い

于 2014-11-19T13:05:07.650 に答える