以下のコードは、sharepoint 2010 の私の Web パーツの一部です。
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;
}
}
}
}
私はここで立ち往生しています。私がする必要があるのは、メソッド UpdateList を作成したいくつかの値 (s1、s2、s3) に基づいて SharePoint リスト項目を更新することです。ハイパーリンクがクリックされるたびに UpdateList メソッドを呼び出す必要があります。リンクボタンを使ってみたのですが、htmltextwriter では期待通りに動かなかった(コメントされた)ので、単純なアンカータグを 2 つ追加しました。しかし、今クリックイベントを発生させる方法。
system.web.services について読みましたが、機能させることができません。私が今考えることができる唯一のオプションは、メソッドを使用して別の Web サービスを作成し、それにUpdateList
ajax 呼び出しを行うことです。
体は何か他のことを提案できますか、それともASP.Netカラー(LinkButtonなど)をHtmltextwriter
.