【问题标题】:How to databind multiple dropdownlists using loops如何使用循环数据绑定多个下拉列表
【发布时间】:2019-09-15 15:17:59
【问题描述】:

我有一个包含 10 个 asp.dropdownlists 和 1 个 HTML 表格的网络表单,每个下拉列表与一行表格单元格交互。

这些代码可以完美运行,但是太混乱了。我想对其进行简化,以便于阅读和维护。

第一个代码与下拉列表交互 (mat0, mat1,mat2....mat9) (c#)

每个下拉列表共享相同的数据源、值和文本。 我使用 sqlAdapter+ sqlDataset + using() 方法进行数据绑定。 有没有一种方法,比如通过“下拉列表”列表循环,以简化代码。

第二个代码与表格行交互(jQuery)

表格包含 3 列 * 10 行。
第 3 列(总价格)= 第 1 列(数量)* 第 2 列(价格)(同一行) 我使用 keyup( 函数,所以 sigma 是同时计算的。

using (SqlConnection cnn = new 
SqlConnection(Properties.Settings.Default.connString))
            {
                cnn.Open();
                string buta = ("SELECT * FROM [Material] WHERE (([SupplierID] = @SupplierID) AND ([MaterialID] >= @MaterialID))");

                using (SqlCommand cmd = new SqlCommand(buta, cnn))
                {
                    cmd.Parameters.AddWithValue("@SupplierID", Session["Gsuply"].ToString());
                    cmd.Parameters.AddWithValue("@MaterialID", Session["Gchoose"].ToString());
                    SqlDataAdapter dasupplier = new SqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    dasupplier.Fill(ds, "dbo.Material");

                    mat0.DataSource = ds;
                    mat0.DataTextField = "MaterialName";
                    mat0.DataValueField = "MaterialID";
                    mat0.DataBind();

                    mat1.DataSource = ds;
                    mat1.DataTextField = "MaterialName";
                    mat1.DataValueField = "MaterialID";
                    mat1.DataBind();}}


<script>
      //Row 1 (number, price, totalPrice)
    $("#number, #price").keyup(function ()
    {
    var sigma = 1;
    $("#number, #price").each(function() {
        sigma *= Number($(this).val());
    });
    $('#totalPrice').val(sigma);
        });

        //Row 2   (number1, price1, totalprice1)
    $("#number1, #price1").keyup(function ()
    {
    var sigma = 1;
    $("#number1, #price1").each(function() {
        sigma *= Number($(this).val());
    });
    $('#totalPrice1').val(sigma);
        });

对于 c#,我期望 (i=0,i

【问题讨论】:

  • 如果您的 DropDownList 控件名称固定为 mat0,mat1,.....matn,那么您可以使用类似以下内容的循环:for(var i=0;i&lt;YourLength;i++){var _ddl = (DropDownList)Page.FindControl("mat"+i); _ddl.DataSource = ds; _ddl.DataTextField="MaterialName";_ddl.DateValueField="MaterialID";_ddl.DataBind(); }
  • @vikscool 的工作就像一个魅力,谢谢;) 任何关于 Jquery 的建议:D?

标签: c# jquery


【解决方案1】:

你可以这样做;

foreach(DropDownList list in Controls.OfType<DropDownList>())
{
    //TODO: Your desired code
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
相关资源
最近更新 更多