如何在转发器控件内访问gridview内的下拉列表 [英] How to access dropdown inside gridview inside repeater control

查看:60
本文介绍了如何在转发器控件内访问gridview内的下拉列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个酒店计费网络应用程序作为我的最后一年项目。我正在使用转发器控件在一个地方显示所有表格,并且我正在使用gridview,它有下拉列表来选择项目。现在我遇到的问题是我只能获取第一个转发器gridview项目详细信息,第二个不会产生任何数据。

下面是我用来获取的代码下拉列表中的项目详细信息选择了索引更改事件以及aspx标记:显示布局的一些屏幕截图:



点击查看布局



我尝试过:



I'm developing a hotel billing web application as my final year project. I'm using repeater control to show all the tables in one place and in that I'm using gridview which has dropdownlist to select item. Now the problem I'm facing is that I'm only able to fetch the first repeater gridview item details the second one won't yield any data.
Below is the code I'm using to fetch item details on dropdown selected index changed event and also the aspx markup: some of the screenshots showing the layout:

Click to view the layout

What I have tried:

protected void GetItemDetails(object sender, EventArgs e)
    {        
        foreach(RepeaterItem rptrItems in rptrTables.Items)
        {
            GridView gvItems = (GridView)rptrTables.Items[0].FindControl("grdOrder");
            foreach (GridViewRow row in gvItems.Rows)
            {
                DropDownList ddl = sender as DropDownList;
                Control ctrl = row.FindControl("drpItemName") as DropDownList;
                if (ctrl != null)
                {
                    DropDownList ddl1 = (DropDownList)ctrl;
                    if (ddl.ClientID == ddl1.ClientID)
                    {
                        Label UnitPrice = row.FindControl("lblUnitPrice") as Label;
                        Label QTTY = row.FindControl("lblQuantity") as Label;
                        Label UPrice = row.FindControl("lblUnitPrice") as Label;
                        Label LINETOTAL = row.FindControl("lblLineTotal") as Label;
                        SqlConnection conn = new SqlConnection(constring);
                        conn.Open();
                        if (ctrl != null)
                        {
                            if ((ddl1.ID == ddl.ID) && (ddl1.SelectedIndex == ddl.SelectedIndex))
                            {
                                string str = "select * from ItemMaster where ItemName='" + ddl1.SelectedItem.ToString() + "'";
                                SqlCommand com = new SqlCommand(str, conn);
                                SqlDataReader reader = com.ExecuteReader();
                                while (reader.Read())
                                {
                                    UnitPrice.Text = reader["UnitPrice"].ToString();
                                    QTTY.Text = reader["Quantity"].ToString(); ;
                                    decimal totamt = Convert.ToDecimal(QTTY.Text) * Convert.ToDecimal(UnitPrice.Text);
                                }
                                reader.Close();
                                conn.Close();
                            }
                            else
                            {
                                ScriptManager.RegisterStartupScript(this, this.GetType(), "swal", "swal('Item already selected, you can increase the quantity instead!', 'Happy Cakes, Vijayapura', 'warning');", true);
                            }
                        }

                    }
                }
            }
        }              
    }





<pre lang="HTML"><pre><asp:Repeater ID="rptrTables" runat="server" OnItemDataBound="rptrTables_ItemDataBound">
                                    <ItemTemplate>
                                        <div class="col-md-6">
                                            <div class="card card-info">
                                                <div class="card-header with-border">
                                                    <h3 class="card-title"><asp:Label ID="lblTableNumber" runat="server" Text='<%# Eval("TableName") %>'></asp:Label></h3>
                                                    <div class="card-tools">
                                                        <button type="button" class="btn btn-tool" data-widget="collapse">class="fa fa-minus"></button>
                                                    </div>
                                                </div>
                                                <div class="card-body">
                                                    <div class="row">
                                                        <div class="col-md-12">
                                                            <div class="form-group">
                                                                <asp:GridView ID="grdOrder" runat="server" AutoGenerateColumns="false" AllowPaging="true" CssClass="table table-bordered table-hover table-responsive" GridLines="None" PageSize="10" OnRowDataBound="gvRowDataBound">
                                            <Columns>
                                                 <asp:CommandField ShowDeleteButton="true" ControlStyle-CssClass="btn btn-danger fa fa-trash" DeleteText="" HeaderText="Remove" />
                                                <asp:BoundField DataField="RowNumber" HeaderText="Sl. No." />
                                                <asp:TemplateField HeaderText="Item Name">
                                                    <ItemTemplate>
                                                        <asp:DropDownList ID="drpItemname" runat="server" CssClass="form-control select2" OnSelectedIndexChanged="GetItemDetails" AutoPostBack="true"></asp:DropDownList>
                                                    </ItemTemplate>
                                                </asp:TemplateField>
                                                <asp:TemplateField HeaderText="Price">
                                                    <ItemTemplate>
                                                        <asp:Label ID="lblUnitPrice" runat="server" Text='<%# Eval("UnitPrice")%>'></asp:Label>
                                                    </ItemTemplate>
                                                </asp:TemplateField>
                                                <asp:TemplateField HeaderText="Qty">
                                                    <ItemTemplate>
                                                        <asp:Label ID="lblQuantity" runat="server" Text='<%# Eval("Quantity")%>'></asp:Label>
                                                    </ItemTemplate>
                                                </asp:TemplateField>
                                                
                                                <asp:TemplateField HeaderText="Line Total">
                                                    <ItemTemplate>
                                                        <asp:Label ID="lblLineTotal" runat="server" Text="0"></asp:Label>
                                                    </ItemTemplate>
                                                </asp:TemplateField>
                                                <asp:TemplateField HeaderText="Add Item" ConvertEmptyStringToNull="False">
                                                <ItemTemplate>
                                                    <asp:Button ID="ButtonAdd" runat="server" CssClass="btn btn-primary" Text="Add" OnClick="AddItem" CausesValidation="False" />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            </Columns>
                                        </asp:GridView>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                                <div class="card-footer">
                                                    <div class="pull-right">
                                <asp:Button ID="btnSubmit" runat="server" CausesValidation="false" TabIndex="2" CssClass="btn btn-primary" Text="Print KOT" />
                                <asp:Button ID="Button1" runat="server" CausesValidation="false" TabIndex="2" CssClass="btn btn-primary" Text="Print Final Bill" />
                                <asp:Button ID="Button2" runat="server" CausesValidation="false" TabIndex="2" CssClass="btn btn-primary" Text="Complete Order" />
                            </div>
                                                </div>
                                            </div>
                                        </div>
                                    </ItemTemplate>
                                </asp:Repeater>

推荐答案

为什么人们在2019年学习ASP.NET?



Why on earth are people learning ASP.NET in 2019?

GridView gvItems = (GridView)rptrTables.Items[0].FindControl("grdOrder");







您创建一个for循环,然后继续阅读第一项。




You create a for loop, then keep reading the first item.


这篇关于如何在转发器控件内访问gridview内的下拉列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆