【问题标题】:how to get values in dropdownlist bounded within a gridview?如何获取网格视图内的下拉列表中的值?
【发布时间】:2013-12-01 17:12:25
【问题描述】:

在gridview里面有一个下拉列表

<asp:TemplateField HeaderText="Quantity">
    <ItemTemplate>
        <asp:DropDownList ID="quantity" runat="server" DataValueField="ItemID" DataTextField="Quantity">
        </asp:DropDownList>
    </ItemTemplate>
</asp:TemplateField>

对于每个 itemid,Database Table 的 Quantity 字段中都有一些数值 我希望此下拉列表必须包含购物车中所有商品的值 from 1 to quantity.DataTextField

gridview绑定的过程是

create proc [dbo].[prcItemsinCart](@CartID int)
as
    select distinct ct.Price,ct.Quantity,ct.ItemID,
           ct.CartID,ct.ProductID,p.ProductName,
           isnull((  select top 1 convert(varchar,PhotoID,10) + '.' + ExtName
                 from ProductPhoto 
                 where ProductID = ct.ProductID ),'NoImage.jpg'
           ) as Product, 
           ( Select Price*Quantity 
             from CartItems 
             where CartID=ct.CartID and ProductID=ct.ProductID
           ) as SubTotal
    from CartItems as ct 
    inner join ProductInfo as p on ct.ProductID=p.ProductID 
    inner join ProductPhoto as pp on ct.ProductID=pp.ProductID 
    where ct.CartID=@CartID

【问题讨论】:

    标签: c# asp.net gridview data-binding drop-down-menu


    【解决方案1】:

    我会在TemplateField 中添加一个HiddenField 来保存 CartID,我将在代码中使用 CartID。我的标记应如下所示:

    <asp:TemplateField HeaderText="Quantity">
        <ItemTemplate>  
            <asp:HiddenField ID="hdnId" runat="server" value='<%#Eval("CartID") %>'></asp:HiddenField>                            
            <asp:DropDownList ID="quantity" runat="server" DataValueField="ItemID" DataTextField="Quantity">
            </asp:DropDownList>
        </ItemTemplate>
    </asp:TemplateField>
    

    在代码中,在 GridView 的 RowDataBound 中,我找到了 DropDownListHiddenField,运行 Sql Query 以获取我预期的数据,并将它们绑定到我的 DropdownList

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DropDownList quantity = e.Row.FindControl("quantity") as DropDownList;
            HiddenField hdnId = e.Row.FindControl("hdnId") as HiddenField;
    
            if (quantity != null && hdnId != null)
            {
                string queryString = String.Format("SELECT ItemID, Quantity FROM  CartItems  WHERE CartID= {0}", hdnId.Value);
    
                //MyConnectionString is your connection string in web.config
                using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ToString()))
                {
                    SqlCommand command = new SqlCommand(queryString, connection);
                    connection.Open();
                    SqlDataReader reader = command.ExecuteReader();
                    quantity.DataSource = reader;
                    quantity.DataValueField = "ItemID";
                    quantity.DataTextField = "Quantity";
                    quantity.DataBind();               
                }
            }        
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2014-01-24
      相关资源
      最近更新 更多