我有一个动态表,每行我都有一个文本框(txtCantitate)和一个按钮(btnMinus)。在文本框中我有数量(int),在按钮点击我想要数量减少一个。在这里,你有我在桌子上的东西:
你能帮我制作按钮的代码吗?问题是它是一个动态按钮......在每个记录上都有相同的ID ......我不知道该怎么做......
我的语言用于项目C#,. NET 4.5,js,Jquery。
cell = new HtmlTableCell();
HtmlInputButton btnMinus = new HtmlInputButton();
btnMinus.ID = "btnMinus";
btnMinus.Value = "-";
cell.Controls.Add(btnMinus);
row.Cells.Add(cell);
cell = new HtmlTableCell();
HtmlInputText txtCantitate = new HtmlInputText();
txtCantitate.ID = "txtCantitate";
txtCantitate.Value = publicatie.Cantitate.ToString();
cell.Controls.Add(txtCantitate);
row.Cells.Add(cell);
答案 0 :(得分:1)
这是解决方案,
<强>的Javascript 强>
function MinusVal(ctrl)
{
var TextBox = $(ctrl).parent().next().find("input[type=text]");
var Value = parseInt(TextBox.val());
TextBox.val(Value - 1);
return false;
}
C#Backend
btnMinus.Attributes.Add("onclick", "MinusVal(this);");
答案 1 :(得分:1)
您需要在按钮上设置点击事件,该事件将执行您想要的操作:
您需要设置文本框和按钮的ID以匹配您在第一个的行+单元格索引...因为这些是HtmlControls,您实际上没有它们的索引所以您将拥有找到一种方法在那里得到这些(我不会为你编码,抱歉)。
btnMinus.ID = "btnMinus_" + CurrentRowIndex.ToString() + "_" + CurrentCellIndex.ToString();
txtCantitate.ID = "txtCantitate_" + CurrentRowIndex.ToString() + "_" + CurrentCellIndex.ToString();
然后你必须设置事件处理程序......
服务器端单击事件处理程序setter(请参阅下面的实际事件处理程序代码):
btnMinus.Click += myButtonClick;
客户端点击事件处理程序设置器:
btnMinus.Attributes.Add("onclick","JavaScript:myButtonClick(this);");
如果要在服务器端执行事件处理程序代码:
private void myButtonClick(object sender, EventArgs e)
{
Button tmp = sender as Button;
string[] id = tmp.ID.Split(new string[]{"_"}, StringSplitOptions.None);
string textbox_ID = "txtCantitate" + "_" + id[1] + "_" + id[2];
TextBox txt = this.Controls.FindControl(textbox_ID) as TextBox;
int val = -1;
string finaltext = "";
if(int.TryParse(txt.Text, out val))
finaltext = (val-1).ToString();
else
finaltext = "Invalid number, Cannot decrement!";
txt.Text = finaltext;
}
如果要在客户端执行事件处理程序代码:
function myButtonClick(object sender)
{
//i'll let you figure this one out for yourself if you want to do it client-side, but it's very similar to the server-side one as far as logic is concerned...
}