0
請幫助我創建控制動態保存在服務器中,並循環它,我的問題是如何將值從服務器傳遞到創建的輸入控件。這裏是我的代碼來生成輸入控件字符串生成器並在頁面加載時在jquery中序列化它。有沒有辦法將ID名稱的字符串名稱轉換爲C#asp.net中的「HtmlInputText」?
public string BuildDefectStringInputGroup()
{
var jsInputString = new StringBuilder();
// loop to build controls
foreach (var area in AreaList)
{
using (var conn = new SqlConnection(ConStr))
{
conn.Open();
var cmd = new SqlCommand(_qryDefect, conn);
cmd.Parameters.AddWithValue("@viewname", SqlDbType.VarChar).Value = "SkirtCoat_layout";
cmd.Parameters.AddWithValue("@area", SqlDbType.VarChar).Value = area;
var dataReader = cmd.ExecuteReader();
jsInputString.AppendFormat($"<div role='tabpanel' class='tab-pane' id='tab-{area.Replace(" ", string.Empty)}'>");
while (dataReader.Read())
{
jsInputString.AppendFormat($"<div class='col-sm-3'>" +
"<div class='input-group'>" +
"<span class='input-group-btn'>" +
$"<button class='btn btn-danger' type='button' data-toggle='tooltip' data-placement='top' title='Click to decrease value' id='minus-{area.Replace(" ", string.Empty)}-{dataReader.GetValue(1).ToString().Replace(" ", string.Empty).Replace("/", string.Empty)}'>-</button>" +
$"<input id='btn-{area.Replace(" ", string.Empty)}-{dataReader.GetValue(1).ToString().Replace(" ", string.Empty).Replace("/",string.Empty)}' type='button' class='btn btn-primary' value='{dataReader.GetValue(1).ToString()}'/>" +
"</span>" +
$"<input type='text' class='form-control' id='text-{area.Replace(" ", string.Empty)}-{dataReader.GetValue(1).ToString().Replace(" ", string.Empty).Replace("/", string.Empty)}' name='name-{area.Replace(" ", string.Empty)}-{dataReader.GetValue(1).ToString().Replace(" ", string.Empty).Replace("/", string.Empty)}' runat='server'/>" +
"</div>" +
"</div>");
}
jsInputString.AppendFormat($"</div>");
}
}
return jsInputString.ToString();
}
這裏是代碼從服務器
private void GetScrapValue(string dept, string machine, string part, string area, string defectname, int prodid, HtmlInputText inputId)
{
using (var conn = new SqlConnection(ConStr))
{
using (var cmd = new SqlCommand("SetScrapValue",conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Dept", SqlDbType.VarChar).Value = dept;
cmd.Parameters.AddWithValue("@machine", SqlDbType.VarChar).Value = machine;
cmd.Parameters.AddWithValue("@part", SqlDbType.VarChar).Value = part;
cmd.Parameters.AddWithValue("@defectarea", SqlDbType.VarChar).Value = area;
cmd.Parameters.AddWithValue("@defectname", SqlDbType.VarChar).Value = defectname;
cmd.Parameters.AddWithValue("@prodid", SqlDbType.Int).Value = prodid;
SqlParameter qtyParameter = new SqlParameter()
{
ParameterName = "@qty",
Value = -1,
Direction = ParameterDirection.Output
};
cmd.Parameters.Add(qtyParameter);
conn.Open();
cmd.ExecuteNonQuery();
inputId.Value = cmd.Parameters["@qty"].Value.ToString(); // this is the problem
}
}
}
最後我經歷了所有的控制需要循環獲取值,並從服務器設置的值,但我可以將字符串「ID名稱」到「htmlInputText」
private void SetScrapRecords()
{
foreach (var area in AreaList)
{
using (var conn = new SqlConnection(ConStr))
{
conn.Open();
var cmd = new SqlCommand(_qryDefect, conn);
cmd.Parameters.AddWithValue("@viewname", SqlDbType.VarChar).Value = "SkirtCoat_layout";
cmd.Parameters.AddWithValue("@area", SqlDbType.VarChar).Value = area;
var dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
var idName = Request.Form[$"text-{area.Replace(" ", string.Empty)}-{dataReader.GetValue(1).ToString().Replace(" ", string.Empty).Replace("/", string.Empty)}"]; // this where generate the ID name from all the controls generated in the page
HtmlInputText inputName = HtmlInputText(idName); // this is my problem i dont know how to convert the "string" property to a "HtmlInputText"
GetScrapValue("Skirt Coat", "Skirt Coat 4","81310", area, dataReader.GetValue(1).ToString(),1,) // this is the method to grab values but I can'y convert the ID name to a htmlinput prop...
}
}
}
}
所有幫助將非常感謝你!
的方法爲什麼不使用Repeater並在ItemDataBound事件中分配值? – hardkoded
你不能轉換的意思是什麼? HtmlInputText構造函數接受一個字符串,並且你做了什麼,那麼你在這裏得到的錯誤或確切的問題是什麼? –
你好,當我嘗試它給我的錯誤: 錯誤\t CS1955 \t非調用成員'HtmlInputText'不能像方法一樣使用。 – Aevi