1

グリッドビューでドロップダウンリストを使用したい...asp.netから次のコードがあります

<asp:GridView ID="grdvEventosVendedor" runat="server" AllowPaging="True" 
                AutoGenerateColumns="False" CellPadding="4" DatakeyNames="idCita"
                EmptyDataText="No Hay Eventos Para Este Vendedor" ForeColor="#333333" 
                GridLines="None" AllowSorting="True"
                onpageindexchanging="grdvEventosVendedor_PageIndexChanging" 
                onrowcommand="grdvEventosVendedor_RowCommand" 
                onsorting="grdvEventosVendedor_Sorting" CellSpacing="1" HorizontalAlign="Center">
                <AlternatingRowStyle BackColor="White" ForeColor="#284775"/>

                <Columns>
                    <asp:TemplateField HeaderText="" ItemStyle-Width="35px">
                        <ItemTemplate>
                            <asp:ImageButton ID="imgBtnEdicEvento" runat="server" 
                                CommandArgument='<%# Eval("idCita")%>' CommandName="Edicion" 
                                Height="32px" ImageUrl="~/img/pencil_32.png" Width="32px" />
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="" ItemStyle-Width="35px">
                        <ItemTemplate>
                            <asp:ImageButton ID="imgBtnDelete" runat="server"
                                CommandName="Borrar" 
                                ImageUrl="~/img/1385_Disable_16x16_72.png" 
                                onclientclick="return confirm('¿Desea eliminar el registro?');" 
                                CommandArgument='<%# Eval("idCita")%>' />
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:BoundField DataField="Cliente" HeaderText="Cliente" InsertVisible="False" ReadOnly="True" SortExpression="Cliente" ItemStyle-Width="50px" />
                    <asp:BoundField DataField="Empresa" HeaderText="Empresa" InsertVisible="False" ReadOnly="True" SortExpression="Empresa" ItemStyle-Width="50px"/>
                    <asp:BoundField DataField="Telefono" HeaderText="Telefono" InsertVisible="False" ReadOnly="True" SortExpression="Telefono" ItemStyle-Width="50px"/>
                    <asp:BoundField DataField="Nextel" HeaderText="Nextel" InsertVisible="False" ReadOnly="True" SortExpression="Nextel" ItemStyle-Width="50px"/>
                    <asp:BoundField DataField="Tipo" HeaderText="Tipo" InsertVisible="False" ReadOnly="True" SortExpression="Tipo" ItemStyle-Width="50px"/>
                    <asp:BoundField DataField="Descripcion" HeaderText="Descripcion" InsertVisible="False" ReadOnly="True" SortExpression="Descripcion" ItemStyle-Width="100px"/>

                    <asp:TemplateField HeaderText="Fecha" SortExpression="Fecha" ItemStyle-Width="50px">
                        <ItemTemplate>                                            
                            <%# DataBinder.Eval(Container.DataItem, "Fecha", "{0:dd/MM/yyyy}")%>
                        </ItemTemplate>

                        <EditItemTemplate>                                        
                            <asp:TextBox ID="tbxFecha"  runat="server" Text='<%#Bind("Fecha","{0:dd/MM/yyyy}") %>' ValidationGroup="gpEdicionAgenda">
                            </asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:BoundField DataField="HoraInicio" HeaderText="Hora" InsertVisible="False" ReadOnly="True" SortExpression="HoraInicio" ItemStyle-Width="50px"/>
                    <asp:BoundField DataField="Lugar" HeaderText="Lugar" InsertVisible="False" ReadOnly="True" SortExpression="Lugar" ItemStyle-Width="50px"/>

                    <asp:TemplateField HeaderText="Estado" ItemStyle-Width="50px">
                        <ItemTemplate>
                            <asp:DropDownList ID="dpdListEstatus" runat="server">
                                <asp:ListItem>Pendiente</asp:ListItem>
                                <asp:ListItem>Atendido</asp:ListItem>
                            </asp:DropDownList>
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="CRM" ItemStyle-Width="25px">
                        <ItemTemplate>
                            <asp:ImageButton ID="imgBtnCRM" runat="server"
                                CommandArgument='<%# Eval("IdCliente")%>' CommandName="CRM" 
                                ImageUrl="~/img/activar.png" Width="16px" Height="16px" />
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="VM" ItemStyle-Width="25px">
                        <ItemTemplate>
                            <asp:ImageButton ID="imgBtnVerMas" runat="server"
                                CommandArgument='<%# Eval("IdCliente")%>' CommandName="VerMas" 
                                ImageUrl="~/img/search.png" Width="16px" Height="16px" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>

                <EditRowStyle BackColor="#999999" Font-Size="Small" />
                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" Font-Size="Larger" />
                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" HorizontalAlign="Center" Font-Size="Small" />
                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                <SortedAscendingCellStyle BackColor="#E9E7E2" />
                <SortedAscendingHeaderStyle BackColor="#506C8C" />
                <SortedDescendingCellStyle BackColor="#FFFDF8" />
                <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
            </asp:GridView>

それが言う部分は私がddlになりたい部分です...

また、編集、削除などに合計4つのボタンを使用していることに気付くかもしれません...しかし、それは別の話だと思います...

いくつかのことを実行したい...最初に、2つの値を持つドロップダウンリストがあることに気付くでしょう...これは、クエリからデータソースを取得するためです。これらは、この列で可能な2つの値です。取得することができます...

したがって、#1は...Ddlの選択された値がクエリから取得した値になるようにするにはどうすればよいですか...

#2 ddlの値を手動で変更できるので、ポストバックを作成し、その特定の行を新しい値で更新する必要があります(ポストバックが必要な理由は、たとえばddlONSELECTEDINDEXCHANGEDを​​トリガーできるようにするためです。したがって、csファイルを使用して新しいクエリを作成し、行を更新してから、グリッドビューを再度更新します)

他の4つのボタンが機能するのと同じように、これらすべてがrowcommandと関係があるのではないかと思います。

私はこれにC#を使用しているので、メソッドにcsファイルが含まれている場合は、C#の使用を手伝ってくれると助かります...

ありがとう

4

3 に答える 3

4

GridViewでOnRowDataboundイベントを使用する必要があります。好き:

<asp:GridView ID="grdvEventosVendedor" OnRowDatabound="grdvEventosVendedor_RowDataBound">
        <asp:TemplateField HeaderText="Estado" ItemStyle-Width="50px">
            <ItemTemplate>
                <asp:DropDownList ID="dpdListEstatus" runat="server" OnSelectedIndexChanged="dpdListEstatus_SelectedIndexChanged" AutoPostBack="True">
                    <asp:ListItem>Pendiente</asp:ListItem>
                    <asp:ListItem>Atendido</asp:ListItem>
                </asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
</asp:GridView>

次に、.csバックエンドコードでコントロールを見つけ、データアイテムの値に基づいて選択した値を設定する必要があります。

protected void grdvEventosVendedor_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DropDownList dpdListEstatus = e.Row.FindControl("dpdListEstatus") as DropDownList;
        dpdListEstatus.SelectedValue = DataBinder.Eval(e.Row.DataItem, "FieldName").ToString();
    }
}


protected void dpdListEstatus_SelectedIndexChanged(object sender, EventArgs e)
{
    //your logic goes here
}

ASPXコードのドロップダウンでSelectedIndexChangedを設定でき、そのバックエンドコードでロジックを続行できます。わあ、ドロップダウンでautopostback=trueを設定することを忘れないでください。

于 2012-08-14T20:10:18.990 に答える
0
This is what I did that worked for me:

**Snippet from aspx:**

  <asp:TemplateField HeaderText="RECORD_STATUS" SortExpression="RECORD_STATUS">
     <EditItemTemplate>
        <asp:DropDownList  runat="server" ID="ddlRecStatus"                                                SelectedIndex='<%# GetselectedRecStatus(Eval("RECORD_STATUS")) %>'
                                    DataSource = '<%# Recs_Status %>' />
                            </EditItemTemplate>
  </asp:TemplateField>

**Snippet from code-behind:**

 protected void grdSAEdit_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            //Get the refernce to the list control
            DropDownList ddlRecStatus = (DropDownList)(grdSAEdit.Rows[e.RowIndex].FindControl("ddlRecStatus"));

            // Add it to the parameters
            e.NewValues.Add("RECORD_STATUS", ddlRecStatus.Text);

        }

        protected string[] Recs_Status
        {
            get { return new string[] {  "A", "E", "V", "Z" }; }
        }

        protected int GetselectedRecStatus(object status)
        {
            return Array.IndexOf(Recs_Status, status.ToString());
        }
于 2013-02-06T20:16:21.477 に答える
0

GridView RowDataBoundイベントを使用してドロップダウンリストにアクセスできます。同様に、ドロップダウンリストにselectedindexchangedイベントを設定します。

必要なソリューションの基本を示す以下のリンクを参照してください

http://www.codeproject.com/Articles/53559/Accessing-a-DropDownList-inside-a-GridView

于 2012-08-14T20:18:21.400 に答える