asp.net - 从 asp.net Web 服务中按字符串查找控件

标签 asp.net jquery html css

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

提前致谢!

对于任何了解 asp.net/rad 控件的人来说 - 我基本上是在更新数据库,并希望 radcombobox 在添加内容后再次与该数据库同步,然后再自动选择刚刚添加的内容。除了数据绑定(bind)之外,我还需要调用任何东西来刷新该列表吗?

再次感谢!

最佳答案

在这种情况下我会采用以下方式:

  1. 对数据集做一些改动
  2. 调用 web 服务更新 html 页面
  3. 在服务方法上 - 我将加载相同的控件并将其与更新后的数据集数据绑定(bind),如下所示:

    // 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 模板之类的东西来生成标记。

关于asp.net - 从 asp.net Web 服务中按字符串查找控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3009361/

相关文章:

javascript - 从 javascript 调用 button.click() 事件不会触发

c# - 类库代码中的url.Content类型方法

javascript - 如何覆盖 CSS 配色方案设置

html - <ul> 元素不会调整高度以适应子 <li> 元素

javascript - jquery 将值放入输入框

asp.net - 命令 "npm run build"退出,代码为 1

c# - 是否可以使用 Fiddler 来调试 Http 流量问题?

带标题的 jQuery 滑动框,标题在页面加载时从顶部开始

javascript - $.get 总是得到不需要的字符串

javascript - 下拉选项未反射(reflect)在 html 中