从asp.net Web服务中找到String控件

时间:2010-06-09 19:47:38

标签: asp.net jquery html css

因为使用jquery.ajax()通过JSON发送WebControl的对象似乎相对困难,所以我决定将控件的名称作为字符串发送,因为我知道如何做到这一点。然后我立即意识到,从Web服务,我实际上并不知道如何通过ID名称搜索控件。既然它是一项服务,我似乎无法让Control.FindControl()工作,所以有人有想法或建议吗?我要做的就是在我的radcombobox上调用数据绑定()。

提前致谢!

对于任何对asp.net/rad控件一无所知的人 - 我基本上都在更新数据库,并希望在我自动选择刚刚添加的内容之后,再添加一些内容后,radcombobox会再次与该数据库同步。除了数据绑定,我必须调用任何东西刷新该列表吗?

再次感谢!

1 个答案:

答案 0 :(得分:1)

我在这种情况下的方式如下:

  1. 对数据集进行一些更改
  2. 调用Web服务以更新html页面
  3. 在服务方法上 - 我会加载相同的控件并将数据绑定到更新的数据集,如下所示:
  4. 
        // create standard webform
        Page page = new Page();
        HtmlForm form = new HtmlForm();
        page.Controls.Add(form);
        // prepare for rendering
        StringBuilder html = new StringBuilder();
        StringWriter tw = new StringWriter(html);
        HtmlTextWriter hw = new HtmlTextWriter(tw);    
    
        // load the control to render
        Control control = page.LoadControl("relativeControlPath");
        TypeOfYourControl myControl = (TypeOfYourControl)control;
        myControl.DataSet = GetUpdatedDataSet();
        myControl.DataBind();
    
        form.Controls.Add(myControl);
        // render
        HttpContext.Current.Server.Execute(page, hw, false);
    
        // pack the output as JSON
        result.Add("html", html.ToString());
        JavaScriptSerializer ser = new JavaScriptSerializer();
        string json = ser.Serialize(result);
    
        return json;
    

    4。当ajax调用收到上一步的响应时,我只需要用新渲染的那个替换当前的dom元素:

    
    $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        url: "webServiceUrl",
        data: "{'if you need a specific params to identify nature of your control':'" + data + "'}",
        dataType: 'json',
        success: function(result) {
            var output = eval('(' + result.d + ')');
            $("oldNode").remove();
            $("parentNode").append(output.html);
        }
    });
    

    当您处理复合控件并且无法控制或更改其行为时,此方法通常是合适的。 但对于一般的异步更新方法,我建议使用更轻量级的方法,例如通过JSON发送序列化数据,并在客户端使用类似jQuery模板的方法来生成标记。