如何使用.net控件与HTMLTEXTWRITER

本文关键字:HTMLTEXTWRITER 控件 net 何使用 | 更新日期: 2023-09-27 17:54:48

下面提到的代码是我在sharepoint 2010上的webpart的一部分。

public class class1 : System.Web.UI.WebControls.WebParts.WebPart
    { 
protected override void Render(HtmlTextWriter writer)
        {
            string s1 = "first";
            string s2 = "second";
            string s3 = "third";
            slist.Add("first");
            slist.Add("second");
            LinkButton b;
            writer.Write("<div id='tblSegment' ><table >");
            foreach (string s in slist)
            {
                //b = new LinkButton();
                //b.Text = s;
                //b.Click += (sender1, e1) => { b_Click(sender, e, s1, s2, s3); };
                writer.Write("<tr><td >");
                writer.Write("<a href=''  >");
                writer.Write(s + "</a>");
                writer.Write("</td></tr>");
            }
            writer.Write("</table></div>");
        }
        void b_Click(object sender, EventArgs e, string s1, string s2, string s3)
        {
            UpdateList(s1,s2,s3);
        }
    public void UpdateList(string ID, string column, string value)
        {
            using (SPSite oSPsite = new SPSite("http://server"))
            {
                using (SPWeb oSPWeb = oSPsite.OpenWeb())
                {
                    oSPWeb.AllowUnsafeUpdates = true;
                    // Fetch the List
                    SPList list = oSPWeb.Lists["UserProfiles"];
                    //create Query
                    SPQuery query = new SPQuery();
                    query.Query = string.Concat(
                                   "<Where><Eq>",
                                      "<FieldRef Name='ID'/>",
                                      "<Value Type='String'>" + ID + "</Value>",
                                   "</Eq></Where>");
                    //get List Item
                    SPListItemCollection listItems = list.GetItems(query);
                    SPListItem item = listItems[0];
                    //update List Item
                    item[column] = value;
                    item.Update();
                    oSPWeb.AllowUnsafeUpdates = false;
                }
            }
        }
}

我有点卡在这里,我需要做的是根据一些值(s1,s2,s3)更新sharepoint列表项,为此我创建了方法UpdateList。每当单击任何超链接时,我需要调用UpdateList方法。我试图使用链接按钮,但正如预期的那样,他们没有工作(评论)与htmltextwriter,所以我添加了两个简单的锚标记。但是现在如何触发click事件呢?

我读了system.web.services,但无法使其工作。我现在能想到的唯一选择是创建一个单独的web服务,其中包含方法UpdateList,并对其进行ajax调用。

任何人都可以建议一些其他的东西,或者是有可能使用ASP。网络颜色(如LinkButton)与Htmltextwriter

如何使用.net控件与HTMLTEXTWRITER

Ok首先使用OnLoad事件而不是Render。

你需要做的是将LinkButton添加到Controls属性。

如果不手动编写回发事件,您将发现很难让超链接直接调用updatelist。

编辑:

List<string> slist = new List<string>();
        protected void Page_Load(object sender, EventArgs e)
        {
            string s1 = "first";
            string s2 = "second";
            string s3 = "third";
            slist.Add("first");
            slist.Add("second");
            LinkButton b;

            foreach (string s in slist)
            {
                b = new LinkButton();
                b.Text = s;
                b.Click += (sender1, e1) => { b_Click(sender, e, s1, s2, s3); };
                this.Form.Controls.Add(b);
                this.Form.Controls.Add(new LiteralControl("<br/>"));
            }
        }
        void b_Click(object sender, EventArgs e, string s1, string s2, string s3)
        {
            UpdateList(s1, s2, s3);
        }
        public void UpdateList(string ID, string column, string value)
        {
            // ... enter code here
        }
    }

将Page_Load替换为控件的load事件,然后将this.Form.Controls替换为this.controls。你也可以在 来为链接之间提供一个空格,而不是换行符。