protected void Page_Load(object sender, EventArgs e)
{
Conn.Open();
//執行動作
string Action = CommFun.Get_Safe_Str(Request["Action"]);
if (!IsPostBack)
{
if (Action == "")
{
rpt_Pro_Order_List_Bind();
}
else if (Action == "Single_Review") //點選稽核
{
lbtn_Audit_eShop_Price_Command();
}
else //點選批量稽核
{
btn_Batch_Review_eShop_Price();
}
}
}
Repeater綁定資料後,為LinkButton添加onclick屬性,用于執行頁面腳本代碼。
代碼如下:protected void rpt_Pro_Order_List_Bind()
{
……
this.rpt_Review.DataSource = Dt;
this.rpt_Review.DataBind();
for (int i = 0; i < this.rpt_Review.Items.Count; i++)
{
LinkButton lbtn_Audit_eShop_Price = (LinkButton)this.rpt_Review.Items[i].FindControl("lbtn_Audit_eShop_Price");
if (Dt.Rows[i]["Audit_eShop_Price"].ToString() == "1")
{
lbtn_Audit_eShop_Price.Enabled = false;
lbtn_Audit_eShop_Price.Text = "已稽核";
}
else
{
lbtn_Audit_eShop_Price.Enabled = true;
lbtn_Audit_eShop_Price.Attributes.Add("onclick",
"return lbtn_Audit_eShop_Price_Command(this, '" + Dt.Rows[i]["OrderId"].ToString() + "');");
}
}
}
[code]
2.用Ajax實作無重新整理批量稽核。
注意:這裡用到的控件必須是Html控件,否則會引起回發。但在Repeater内部伺服器控件也可以使用。
這裡隻需給input="btton"添加一個onclick屬性,直接執行Ajax腳本。
腳本内容如下:
[code]
//批量稽核
function Batch_Review()
{
if(!checkSelItem("OrderId","請選擇訂單!")) return false;
if(!confirm("确定要稽核嗎?")) return false;
var OrderIds = ""; //記錄所有訂單号
var elements = document.getElementsByName("OrderId");
for (var m=0; m < elements.length; m++){
if(m == elements.length - 1)
{
OrderIds = OrderIds + elements[m].value;
}
else
{
OrderIds = OrderIds + elements[m].value + ",";
}
}
var orderIdArr = OrderIds.split(',');
var newOrderIdStr = "";
var j = 0;//記錄選擇的訂單個數
var position = "";//記錄選擇的訂機關置
for(var i = 0;i
{
var chk_Id = "OrderId_"+orderIdArr[i];
if($_Id(chk_Id).checked)//記錄選中的訂單
{
if(i == orderIdArr.length - 1)
{
newOrderIdStr += orderIdArr[i];
position += i;
}
else
{
newOrderIdStr += orderIdArr[i]+",";
position += i + ",";
}
j++;
}
}
newOrderIdStr = RemoveRightComma(newOrderIdStr);//去除末尾逗号後的訂單号
position = RemoveRightComma(position);//去除末尾逗号後的位置
$.ajax({
type: "POST",
url: "AjaxTest.aspx",
data: { Order_Id_Arr: newOrderIdStr, Action: "Batch_Review" },
success: function(msg) {
if (msg != "") {
for(var k = 0 ;k
{
var newOrderIdArr = newOrderIdStr.split(',');
var positionArr = position.split(',');
$_Id("OrderId_"+newOrderIdArr[k]).disabled = "disabled";
if(parseInt(positionArr[k])<10)
{
$_Id("rpt_Review_ctl0"+parseInt(positionArr[k])+"_lbtn_Audit_eShop_Price").innerHTML = "已稽核";
$_Id("rpt_Review_ctl0"+parseInt(positionArr[k])+"_lbtn_Audit_eShop_Price").disabled = "disabled";
}
else
{
$_Id("rpt_Review_ctl"+parseInt(positionArr[k])+"_lbtn_Audit_eShop_Price").innerHTML = "已稽核";
$_Id("rpt_Review_ctl"+parseInt(positionArr[k])+"_lbtn_Audit_eShop_Price").disabled = "disabled";
}
}
}
}
})
return true;
}
//去除右邊逗号
function RemoveRightComma(str)
{
if(str == "") return;
var i;
for(i = str.length-1;i>=0;i--)
{
//charAt(i)取某一個位置的字元
if(str.charAt(i) != ",") break;
}
//截取字元串,substring(start,stop);傳回的結果不包含最後一位
str = str.substring(0,i+1);
return str;
}
至此執行個體講解結束。
最後回顧思路:
1.單條稽核:在頁面初始化時,給稽核按鈕加上onclick屬性,執行頁面腳本,單擊稽核後,背景的page_load事件根據Action選擇執行的事件。
2.批量稽核: 給批量稽核按鈕加上onclick屬性,執行Ajax腳本,背景的page_load事件同樣根據Action選擇執行的事件。批量稽核按鈕必須為Html控件。