关于ajax数据绑定

kerier 2009-07-08 08:09:22
c#.net页面中用了AJAX方法后无法进行数据绑定,
请问有何解决良方?
贴出代码如下:
[AjaxPro.AjaxMethod()]
public void bagtoCart(string selectvalue,string style,string num,string id)
{
if (ViewState["order"] == null)
ViewState["order"] = new ArrayList();

BLL.Product bll = new BLL.Product();
model = bll.GetModel(int.Parse(id));


DataSet ds = AccessHelper.ExecuteDataSet(AccessHelper.Connection, "select * from packbag where id=" + selectvalue);
DataView dv = ds.Tables[0].DefaultView;

string category = "包装袋";
string pname = dv[0].Row["packbagname"].ToString();
decimal price = decimal.Parse(dv[0].Row["packbagprice"].ToString());

if (style == "0")
{
style = "20";
}

if (num == "")
{
num = "1";
}

int ordernum = (int.Parse(num) * 1000) / (int.Parse(style));
decimal sumprice = ordernum * price;



((ArrayList)ViewState["order"]).Add("茶叶" + "|" + model.P_Famous + "|" + model.P_I_Rate1 + "|" + num + "|" + int.Parse(num) * model.P_I_Rate1);
((ArrayList)ViewState["order"]).Add(category + "|" + pname + "|" + price + "|" + ordernum + "|" + sumprice);

rptorderbind();
}

/// <summary>
/// 订单绑定
/// </summary>
private void rptorderbind()
{
DataTable oDT = new DataTable();
oDT.Columns.Add("category"); oDT.Columns.Add("pname"); oDT.Columns.Add("price"); oDT.Columns.Add("num"); oDT.Columns.Add("sumprice");
DataRow oDR;
if (!object.Equals(ViewState["order"], null))
{
ArrayList arr = (ArrayList)ViewState["order"];
for (int i = 0; i < arr.Count; i++)
{
string[] arrorder = arr[i].ToString().Split('|');
oDR = oDT.NewRow();
oDR["category"] = arrorder[0];
oDR["pname"] = arrorder[1];
oDR["price"] = arrorder[2];
oDR["num"] = arrorder[3];
oDR["sumprice"] = arrorder[4];
oDT.Rows.Add(oDR);
}
}
Rptorder.DataSource = oDT.DefaultView;
Rptorder.DataBind();
}

结果执行到
Rptorder.DataSource = oDT.DefaultView;
就断掉了...
再也执行不下去...
帮帮我吧...
这个鸟东西搞了很久了...
还没搞好...
只要能解决问题多少分都给...
顺便把前台JS也贴下
<script type="text/javascript">
function toCart() {
var packbag = document.getElementsByName("packbag");
var selectvalue = -1;
for (i = 0; i < packbag.length; i++) {
if (packbag[i].checked) {
selectvalue = packbag[i].value;
}
}
if (selectvalue < 0) {
alert('你没有选择任何项');
}

var id = '<%=Request["ID"] %>';
var style = document.getElementById('<%=style.ClientID %>').value;
var num = document.getElementById('<%=num.ClientID %>');
var number = num.value;

Product_detail.bagtoCart(selectvalue, style,number,id);
}
</script>

pageload里面类注册
AjaxPro.Utility.RegisterTypeForAjax(typeof(Product_detail));
...全文
166 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kerier 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ChargeForward 的回复:]
你的錯誤是 你不該把數據綁定到repeater 應該把這些數據傳回客戶端 然後腳本接收 然後處理這些數據 呈現到頁面上
[/Quote]
那应该怎么做?
myufo1234 2009-07-09
  • 打赏
  • 举报
回复
你用JSON把数据带加客户端,在JS里处理吧
ChargeForward 2009-07-08
  • 打赏
  • 举报
回复
你的錯誤是 你不該把數據綁定到repeater 應該把這些數據傳回客戶端 然後腳本接收 然後處理這些數據 呈現到頁面上
ChargeForward 2009-07-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kerier 的回复:]
引用 2 楼 ChargeForward 的回复:
AjaxPro.AjaxMethod()的原理你懂嗎? bagtoCart(string selectvalue,string style,string num,string id)直接調用rptorderbind()后 Rptorder的數據是更新了 但是你並沒有執行頁面呈現那個步驟 頁面還是原來的頁面 所以看不出有任何變化
PS:你這樣做的思路好像是錯的 只能由bagtoCart(string selectvalue,string style,string num,string id)把數據庫裡的數據讀出來返回給腳本 然後由腳本…
[/Quote]
呵呵 那算我看錯了 不過 你是能被綁定 頁面應該也不會有任何變化 AJAXPRO只是服務器端的Ajax解決方案 他不會對客戶端產生任何影響
kerier 2009-07-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ChargeForward 的回复:]
AjaxPro.AjaxMethod()的原理你懂嗎? bagtoCart(string selectvalue,string style,string num,string id)直接調用rptorderbind()后 Rptorder的數據是更新了 但是你並沒有執行頁面呈現那個步驟 頁面還是原來的頁面 所以看不出有任何變化
PS:你這樣做的思路好像是錯的 只能由bagtoCart(string selectvalue,string style,string num,string id)把數據庫裡的數據讀出來返回給腳本 然後由腳本重新組織頁面內容 你這樣Product_de…
[/Quote]

你上面说

bagtoCart(string selectvalue,string style,string num,string id)直接調用rptorderbind()后 Rptorder的數據是更新了

没有更新...
Rptorder.DataSource = oDT.DefaultView;
如果有更新的话...
Rptorder.DataBind();
这句肯定会执行的...
ChargeForward 2009-07-08
  • 打赏
  • 举报
回复
AjaxPro.AjaxMethod()的原理你懂嗎? bagtoCart(string selectvalue,string style,string num,string id)直接調用rptorderbind()后 Rptorder的數據是更新了 但是你並沒有執行頁面呈現那個步驟 頁面還是原來的頁面 所以看不出有任何變化
PS:你這樣做的思路好像是錯的 只能由bagtoCart(string selectvalue,string style,string num,string id)把數據庫裡的數據讀出來返回給腳本 然後由腳本重新組織頁面內容 你這樣Product_detail.bagtoCart(selectvalue, style,number,id); 根本不會是頁面有任何變化


kerier 2009-07-08
  • 打赏
  • 举报
回复
csdn无人矣

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧