【发布时间】: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<YourLength;i++){var _ddl = (DropDownList)Page.FindControl("mat"+i); _ddl.DataSource = ds; _ddl.DataTextField="MaterialName";_ddl.DateValueField="MaterialID";_ddl.DataBind(); } -
@vikscool 的工作就像一个魅力,谢谢;) 任何关于 Jquery 的建议:D?