我正在创建一个带有按钮的表格。该按钮被称为“更新”,当我点击它时一切正常。在此表下,我有一个“Log”按钮,可以查看所做更改的历史记录。这会隐藏第一个表(带有表格的面板),并使第二个面板可见,显示第二个表格。在这个表中我有一个带有“恢复”按钮的列来恢复状态= 0的数据。我的问题在这里,当我点击这个按钮时,它会触发页面的requiredfieldvalidators。我使用了Validationgroup和Reasonvalidation,但似乎没有任何工作......请帮帮我! :)
以下是一些代码:
表更新btn工作正常:
public void getData()
{
Provider p = new Provider();
providers = p.getAllProviders();
int count = 1;
//Create a Table
Table tbl = new Table();
tbl.Style["Border-width"] = "5px";
tbl.Style["Border-style"] = "solid";
tbl.GridLines = GridLines.Both;
tbl.CellPadding = 5;
//Header of Table
TableRow infoRow = new TableRow();
//Cell of header
TableCell tch0 = new TableCell();
tch0.Text = "<b>ProviderID</b>";
TableCell tch1 = new TableCell();
tch1.Text = "<b>Name</b>";
TableCell tch2 = new TableCell();
tch2.Text = "<b>Phone</b>";
TableCell tch3 = new TableCell();
tch3.Text = "<b>Address</b>";
TableCell tch4 = new TableCell();
tch4.Text = "<b>Update</b>";
//Add cells to header
infoRow.Cells.Add(tch0);
infoRow.Cells.Add(tch1);
infoRow.Cells.Add(tch2);
infoRow.Cells.Add(tch3);
infoRow.Cells.Add(tch4);
//Add header to table
tbl.Rows.Add(infoRow);
if (providers != null)
{
foreach (Provider pr in providers)
{
//Create a row
TableRow tr = new TableRow();
//Add lable to evry cell
TableCell tc1 = new TableCell();
Label pID = new Label();
tc1.Controls.Add(pID);
TableCell tc2 = new TableCell();
Label name = new Label();
tc2.Controls.Add(name);
TableCell tc3 = new TableCell();
Label phone = new Label();
tc3.Controls.Add(phone);
TableCell tc4 = new TableCell();
Label address = new Label();
tc4.Controls.Add(address);
TableCell tc5 = new TableCell();
Button updateBtn = new Button();
updateBtn.Click += new System.EventHandler(setUpdate);
updateBtn.Text = "Update";
updateBtn.ID = "update" + count;
updateBtn.ValidationGroup = "updateGrp";
tc5.Controls.Add(updateBtn);
//Fill lables
pID.Text = pr.getProviderID().ToString();
name.Text = pr.getName();
phone.Text = pr.getPhone();
Address a = new Address();
a.setAddressID(pr.getAddressID());
a = a.getAddressByID();
address.Text = a.getStreet() + " " + a.getNumber() + " " + a.getCity() + " " + a.getZipCode() + " " + a.getCountry();
//Add cells to row
tr.Cells.Add(tc1);
tr.Cells.Add(tc2);
tr.Cells.Add(tc3);
tr.Cells.Add(tc4);
tr.Cells.Add(tc5);
//Add row to table
tbl.Rows.Add(tr);
count++;
}
}
//Add table to form
pTableData.Controls.Add(tbl);
}
更新功能btn:
public void setUpdate(object sender, EventArgs e)
{
Button btn = (Button)sender;
string id = btn.ID;
int idInt = Convert.ToInt32(id.Substring(6));
Provider p = new Provider();
Address a = new Address();
p = (Provider)providers[idInt - 1];
a.setAddressID(p.getAddressID());
a = a.getAddressByID();
pUpdate.Visible = true;
lbl_providerID.Text = p.getProviderID().ToString();
txt_pUpdate_Name.Text = p.getName();
txt_pUpdate_Phone.Text = p.getPhone();
txt_pUpdate_Street.Text = a.getStreet();
txt_pUpdate_Number.Text = a.getNumber().ToString();
txt_pUpdate_City.Text = a.getCity();
txt_pUpdate_ZipCode.Text = a.getZipCode();
txt_pUpdate_Country.Text = a.getCountry();
}
还原btn的第二个表:
public void getLog()
{
LogProvider lp = new LogProvider();
logproviders = lp.getAllLogProviders();
int count = 1;
//Create a Table
Table tbl = new Table();
tbl.Style["Border-width"] = "5px";
tbl.Style["Border-style"] = "solid";
tbl.GridLines = GridLines.Both;
tbl.CellPadding = 5;
//Header of Table
TableRow infoRow = new TableRow();
//Cell of header
TableCell tch0 = new TableCell();
tch0.Text = "<b>LogProviderID</b>";
TableCell tch1 = new TableCell();
tch1.Text = "<b>Name</b>";
TableCell tch2 = new TableCell();
tch2.Text = "<b>Phone</b>";
TableCell tch3 = new TableCell();
tch3.Text = "<b>Address</b>";
TableCell tch4 = new TableCell();
tch4.Text = "<b>Status</b>";
TableCell tch5 = new TableCell();
tch5.Text = "<b>Type</b>";
TableCell tch6 = new TableCell();
tch6.Text = "<b>Updated on</b>";
TableCell tch7 = new TableCell();
tch7.Text = "<b>Changed by</b>";
TableCell tch8 = new TableCell();
tch8.Text = "<b>Restore</b>";
//Add cells to header
//infoRow.Cells.Add(tch0);
infoRow.Cells.Add(tch1);
infoRow.Cells.Add(tch2);
infoRow.Cells.Add(tch3);
infoRow.Cells.Add(tch4);
infoRow.Cells.Add(tch5);
infoRow.Cells.Add(tch6);
infoRow.Cells.Add(tch7);
infoRow.Cells.Add(tch8);
//Add header to table
tbl.Rows.Add(infoRow);
if (providers != null)
{
foreach (LogProvider logp in logproviders)
{
//Create a row
TableRow tr = new TableRow();
//Add lable to evry cell
TableCell tc1 = new TableCell();
Label lpID = new Label();
tc1.Controls.Add(lpID);
TableCell tc2 = new TableCell();
Label name = new Label();
tc2.Controls.Add(name);
TableCell tc3 = new TableCell();
Label phone = new Label();
tc3.Controls.Add(phone);
TableCell tc4 = new TableCell();
Label address = new Label();
tc4.Controls.Add(address);
TableCell tc5 = new TableCell();
Label status = new Label();
tc5.Controls.Add(status);
TableCell tc6 = new TableCell();
Label type = new Label();
tc6.Controls.Add(type);
TableCell tc7 = new TableCell();
Label updatedOn = new Label();
tc7.Controls.Add(updatedOn);
TableCell tc8 = new TableCell();
Label by = new Label();
tc8.Controls.Add(by);
TableCell tc9 = new TableCell();
//Fill lables
lpID.Text = logp.getLogProviderID().ToString();
name.Text = logp.getName();
phone.Text = logp.getPhone();
LogAddress la = new LogAddress();
la.setLogAddressID(logp.getLogProviderID());
la = la.getLogAddressByID();
address.Text = la.getStreet() + " " + la.getNumber() + " " + la.getCity() + " " + la.getZipCode() + " " + la.getCountry();
int stat;
if (logp.getStatus())
stat = 1;
else
stat = 0;
status.Text = stat.ToString();
type.Text = logp.getType();
updatedOn.Text = String.Format("{0:yyyy-MM-dd HH:mm:ss}", logp.getUpdateDate());
by.Text = logp.getUserName();
if(stat == 0)
{
Button restoreBtn = new Button();
restoreBtn.Click += new System.EventHandler(setRestore);
restoreBtn.Text = "Restore";
restoreBtn.ID = "restore" + count;
restoreBtn.ValidationGroup = "restoreGrp";
tc9.Controls.Add(restoreBtn);
}
//Add cells to row
//tr.Cells.Add(tc1);
tr.Cells.Add(tc2);
tr.Cells.Add(tc3);
tr.Cells.Add(tc4);
tr.Cells.Add(tc5);
tr.Cells.Add(tc6);
tr.Cells.Add(tc7);
tr.Cells.Add(tc8);
tr.Cells.Add(tc9);
//Add row to table
tbl.Rows.Add(tr);
count++;
}
}
//Add table to form
pTableLog.Controls.Add(tbl);
}
恢复功能btn(不起作用!!):
public void setRestore(object sender, EventArgs e)
{
Button btn = (Button)sender;
string id = btn.ID;
int idInt = Convert.ToInt32(id.Substring(7));
LogProvider lp = new LogProvider();
Provider p = new Provider();
LogAddress la = new LogAddress();
lp = (LogProvider)logproviders[idInt - 1];
p.setProviderID(lp.getProviderID());
p = p.getProviderByID();
la.setLogAddressID(lp.getProviderID());
}
答案 0 :(得分:0)
我不确定页面中所需字段验证器背后的逻辑。我的理解是因为验证器事件没有解雇?
如果是这样,您可以在调用按钮单击事件之前禁用验证器,并在以后启用它