gpt4 book ai didi

c# - 使用按钮和 requirefieldvalidators c# 动态创建的表

转载 作者:行者123 更新时间:2023-11-30 18:37:18 27 4
gpt4 key购买 nike

我正在创建一个表格,其中有一列充满了按钮。该按钮称为“更新”,当我单击它时一切正常。在这张表下我有一个按钮“日志”来查看所做更改的历史记录。这将隐藏第一个表格(内部有表格的面板)并使显示第二个表格的第二个面板可见。在此表中,我有一列带有“恢复”按钮的列,用于恢复状态 = 0 的数据。我的问题就在这里,当我单击此按钮时,它会触发页面的 requiredfieldvalidators。我已经使用了 Validationgroup 和 Causesvalidation,但似乎没有任何效果......请帮助我! :)

这是一些代码:

带有更新 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);
}

更新按钮的功能:

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();
}

带有恢复按钮的第二个表:

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());

}

最佳答案

我不确定页面中必填字段验证器背后的逻辑。我的理解是因为验证器事件没有触发?

如果是这样,您可以在调用按钮单击事件之前禁用验证器,稍后再启用它

关于c# - 使用按钮和 requirefieldvalidators c# 动态创建的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12950599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com