代碼如下
protected void BtnBookTypeAdd_Click(object sender, EventArgs e)
{
//遍歷所有控制元件
decimal max_score =0;
decimal pf_score = 0;
decimal ckbox_score = 0;
decimal txtbox_score = 0;
decimal zf = 0;
foreach (RepeaterItem c in RpBookType.Items)
{
CheckBox check = (CheckBox)c.FindControl("chk_active");
TextBox txtbox = (TextBox)c.FindControl("txt_active");
Label lbl_PFXL_SCORE = (Label)c.FindControl("lbl_PFXL_SCORE");
Label lbl_PFDL_NAME = (Label)c.FindControl("lbl_PFDL_NAME");
Label lbl_PFXL_NAME = (Label)c.FindControl("lbl_PFXL_NAME");
Label lbl_PFDL_ID = (Label)c.FindControl("lbl_PFDL_ID");
Label lbl_PFXL_ID = (Label)c.FindControl("lbl_PFXL_ID");
max_score = Convert.ToDecimal(lbl_PFXL_SCORE.Text.ToString());
//先做一些輸入合法性的判斷
if (DAL.DataOperWj.IsNumric_wj(txtbox.Text.ToString()) == false) //是否是合法的格式
{
Common.ShowMessage.Show(Page, "error", "二級分類 " + lbl_PFXL_NAME.Text.ToString() + " 輸入的格式錯誤,請檢查! ");
return;
}
if (txtbox.Text.ToString().Trim().IndexOf('-') > -1)
{
Common.ShowMessage.Show(Page, "error", "二級分類 " + lbl_PFXL_NAME.Text.ToString() + " 有非法字符,請檢查! ");
return;
}
pf_score = Convert.ToDecimal(txtbox.Text.ToString()); //合法的格式再轉換
if (pf_score > max_score && txtbox.Visible==true ) //是否大于最高分
{
Common.ShowMessage.Show(Page, "error", "二級分類 " + lbl_PFXL_NAME.Text.ToString() + " 列,大于最高分,請檢查! " );
return;
}
//合法檢查結束,算個總分
txtbox_score = txtbox_score + Convert.ToDecimal(txtbox.Text.ToString().Trim());
if (check.Checked == true)
{
ckbox_score = ckbox_score + Convert.ToDecimal(lbl_PFXL_SCORE.Text.ToString().Trim());
}
}
//總分
zf = txtbox_score + ckbox_score;
//前面是一系列的判斷,遍歷repeater 取數
//取完后,算出個總分,確認是否提交
this.BtnBookTypeAdd.Attributes.Add("onclick", "return confirm('總分為: "+zf+" 確定提交嗎? ');");
//選擇是就提交,否就什么都不做,上面那句好像不行
//todo 寫庫。
}
uj5u.com熱心網友回復:
先要完成一些判斷和計算,算出總分,然后在提示資訊中,帶入總分,彈出確認框uj5u.com熱心網友回復:
還有個問題是,要 點兩次按鈕,才能彈出提示框.第三次就正常了uj5u.com熱心網友回復:
不是用registscript么?uj5u.com熱心網友回復:
https://bbs.csdn.net/topics/330152693?list=8450681uj5u.com熱心網友回復:
https://bbs.csdn.net/topics/360064587uj5u.com熱心網友回復:
在你的代碼this.BtnBookTypeAdd.Attributes.Add("onclick", "return confirm('總分為: "+zf+" 確定提交嗎? ')這里你只是給前端標簽一個行為定義,但是你并沒有讓頁面本次重繪時立刻就執行 confirm,而且你注冊的 confirm 代碼執行之后也沒有將用戶提交的資訊回發給 asp.net 代碼中的精確指定的控制元件(頁面或者頁面中某個組件、控制元件)來捕獲事件,實際上這里你的 asp.net 知識是“倒置”的,編程技術方向理解是錯的。
uj5u.com熱心網友回復:
ClientScript.RegisterStartupScript(GetType(), "confirm", "CallServerMethod(confirm('總分為: "+zf.ToString()+" 是否提交?'),null);", true);
我改成這樣的,實作了目的,但又帶來一個問題。
點確認,執行 Confirm()
private string Confirm()
{
//這里有一些寫庫操作
binddata();
//這個是系結 repeater 的操作,但發現repeater上的資料并沒有重繪。
}
uj5u.com熱心網友回復:
我的需求是這樣的,代碼如下
protected void BtnBookTypeAdd_Click(object sender, EventArgs e)
{
//遍歷所有控制元件
decimal max_score =0;
decimal pf_score = 0;
decimal ckbox_score = 0;
decimal txtbox_score = 0;
decimal zf = 0;
foreach (RepeaterItem c in RpBookType.Items)
{
CheckBox check = (CheckBox)c.FindControl("chk_active");
TextBox txtbox = (TextBox)c.FindControl("txt_active");
Label lbl_PFXL_SCORE = (Label)c.FindControl("lbl_PFXL_SCORE");
Label lbl_PFDL_NAME = (Label)c.FindControl("lbl_PFDL_NAME");
Label lbl_PFXL_NAME = (Label)c.FindControl("lbl_PFXL_NAME");
Label lbl_PFDL_ID = (Label)c.FindControl("lbl_PFDL_ID");
Label lbl_PFXL_ID = (Label)c.FindControl("lbl_PFXL_ID");
max_score = Convert.ToDecimal(lbl_PFXL_SCORE.Text.ToString());
//先做一些輸入合法性的判斷
if (DAL.DataOperWj.IsNumric_wj(txtbox.Text.ToString()) == false) //是否是合法的格式
{
Common.ShowMessage.Show(Page, "error", "二級分類 " + lbl_PFXL_NAME.Text.ToString() + " 輸入的格式錯誤,請檢查! ");
return;
}
if (txtbox.Text.ToString().Trim().IndexOf('-') > -1)
{
Common.ShowMessage.Show(Page, "error", "二級分類 " + lbl_PFXL_NAME.Text.ToString() + " 有非法字符,請檢查! ");
return;
}
pf_score = Convert.ToDecimal(txtbox.Text.ToString()); //合法的格式再轉換
if (pf_score > max_score && txtbox.Visible==true ) //是否大于最高分
{
Common.ShowMessage.Show(Page, "error", "二級分類 " + lbl_PFXL_NAME.Text.ToString() + " 列,大于最高分,請檢查! " );
return;
}
//合法檢查結束,算個總分
txtbox_score = txtbox_score + Convert.ToDecimal(txtbox.Text.ToString().Trim());
if (check.Checked == true)
{
ckbox_score = ckbox_score + Convert.ToDecimal(lbl_PFXL_SCORE.Text.ToString().Trim());
}
}
//總分
zf = txtbox_score + ckbox_score;
ClientScript.RegisterStartupScript(GetType(), "confirm", "CallServerMethod(confirm('總分為: "+zf.ToString()+" 是否提交?'),null);", true);
}
這些是對一些repeater上的textbox匯總計算,然后彈出個確認框,是否提交
private string Confirm()
{
//這里是提交
//遍歷所有控制元件
decimal pf_score = 0;
//decimal ckbox_score = 0;
//decimal txtbox_score = 0;
decimal zf = 0;
foreach (RepeaterItem c in RpBookType.Items)
{
CheckBox check = (CheckBox)c.FindControl("chk_active");
TextBox txtbox = (TextBox)c.FindControl("txt_active");
Label lbl_PFXL_SCORE = (Label)c.FindControl("lbl_PFXL_SCORE");
Label lbl_PFDL_NAME = (Label)c.FindControl("lbl_PFDL_NAME");
Label lbl_PFXL_NAME = (Label)c.FindControl("lbl_PFXL_NAME");
Label lbl_PFDL_ID = (Label)c.FindControl("lbl_PFDL_ID");
Label lbl_PFXL_ID = (Label)c.FindControl("lbl_PFXL_ID");
if (txtbox.Visible == true)
{
pf_score = Convert.ToDecimal(txtbox.Text.ToString());
}
if (check.Visible == true)
{
if (check.Checked == true)
{
pf_score = Convert.ToDecimal(lbl_PFXL_SCORE.Text.ToString().Trim());
}
else
{
pf_score = 0;
}
}
//開始插入資料
int KHXM_ID = Convert.ToInt16(DrpBiz.SelectedValue.ToString()); //考核專案
int PFDL_ID = Convert.ToInt16(lbl_PFDL_ID.Text.ToString()); //評分一級分類
int PFXL_ID = Convert.ToInt16(lbl_PFXL_ID.Text.ToString()); //評分二級分類
string KHXM_NAME = DrpBiz.SelectedItem.Text.ToString().Trim();
string PFDL_NAME = lbl_PFDL_NAME.Text.ToString();
string PFXL_NAME = lbl_PFXL_NAME.Text.ToString();
string PFSD = drp_PFSD.SelectedItem.Text.ToString().Trim(); //評分時點
string RYID = drp_PFR.SelectedValue.ToString().Trim(); //被考核人員ID
string RYNAME = drp_PFR.SelectedItem.Text.ToString().Trim(); //被考核人員姓名
string PFRY = "admin"; //評分人員
string sql =" INSERT into SCORE "
+ "( SCORE_PFSD,SCORE_RYID, SCORE_NAME,SCORE_KHXM_ID,SCORE_KHXM_NAME, "
+ " SCORE_PFDL_ID,SCORE_PFDL_NAME,SCORE_PFXL_ID,SCORE_PFXL_NAME,SCORE_CRKHXM, "
+ " SCORE_PFSCORE,SCORE_DATE,SCORE_PFRY) "
+ " values('"+PFSD+"','"+RYID+"', '"+RYNAME +"','"+KHXM_ID+"','"+KHXM_NAME+"','"+PFDL_ID+"',"
+ " '"+PFDL_NAME+"','"+PFXL_ID+"','"+PFXL_NAME+"','"+PFSD+"', '"+ pf_score+"','"+DateTime.Now.Date+"','"+PFRY+"')";
if (DAL.DataBaseWj.Exe_cmd(sql))
{
//Common.ShowMessage.Show(Page, "success", "資訊添加成功!");
}
else
{
//Common.ShowMessage.Show(Page, "seuss", "資訊洗掉失敗!請重試或聯系管理人員...", "");
}
}
//寫下日志庫,目的是評過分的人員不再顯示在list中
string sql_log = " INSERT into PFLOG "
+ " (PFLOG_KHXMBH,PFLOG_RYID,PFLOG_NAME,PFLOG_DATE,PFLOG_PFR) "
+ " values('" + drp_PFSD.SelectedItem.Text.ToString().Trim() + "','" + drp_PFR.SelectedValue.ToString().Trim() + "',"
+ " '"+ drp_PFR.SelectedItem.Text.ToString().Trim() + "','" + DateTime.Now.Date + "','admin')";
if (DAL.DataBaseWj.Exe_cmd(sql_log))
{
//ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "click", "alert('資訊添加成功!');", true)
}
else
{
//ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "click", "alert('日志資訊添加失敗!');", true);
}
//再綁下資料
BindData1("");
return "Confirm";
}
binadata1 是對 repeater 重新系結 ,但現在repeater 上的資料不重繪,程式是能走到binadata1的
uj5u.com熱心網友回復:
不知道你問題解決沒,以我的理解,你把算總分的操作放在前臺比放在后臺要簡單的多,邏輯也好理解的多,比如給每個分數文本框一個class,在按鈕的OnClientClick事件里取到所有文本框,算出總分,彈出詢問提示,點擊確定把總分存到隱藏域,return true 進后臺走邏輯 就簡單得多uj5u.com熱心網友回復:
多謝各位大神指點轉載請註明出處,本文鏈接:https://www.uj5u.com/net/14585.html
標籤:ASP.NET
下一篇:求助
