嗨是否可以接受覆蓋「渲染」的方法在SharePoint中創建自定義Web部件時?我有一個從System.Web.UI.WebControls.WebPart繼承的Web部件。我將控件添加到「CreateChildControls」中的控件集合中,然後重寫「Render」方法來呈現html和控件。的SharePoint的WebPart +覆蓋渲染方法
我有,當我使用一個下拉列表,但我想知道如果我的上述做法是正確與否我嘗試用結合下拉列表解決這個問題之前的一些問題。
編輯
我初始化我的下拉列表,它在「的CreateChildControls」添加到控件集合。在該方法結束時,我調用綁定我的下拉列表的「BindData」,如果我正在編輯現有記錄,它會綁定下拉列表數據並設置正確的選定索引。然後我在「渲染」方法中渲染控件。下面的代碼片段
protected override void CreateChildControls()
{
base.CreateChildControls();
this.EnsureUpdatePanelFixups();
ddlClient = new DropDownList();
ddlClient.ID = "ddlClient";
ddlClient.SelectedIndexChanged += new EventHandler(ddlClient_SelectedIndexChanged);
ddlClient.AutoPostBack = true;
ddlClient.ValidationGroup = __VALIDATIONGROUP;
ddlClient.Width = ObjCtrlWidth;
upClient = new UpdatePanel();
upClient.ID = "upClient";
upClient.UpdateMode = UpdatePanelUpdateMode.Conditional;
upClient.ContentTemplateContainer.Controls.Add(ddlClient);
this.Controls.Add(upClient);
//More controls here
BindData();
}
「ddlClient是一個‘DropDownList的’,‘upClient’是一個更新面板,是的,我有一個下拉列表中選擇一個更新面板,我使用update方法更新其他更新面板。
這是「渲染」的方法
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
//stuff here
writer.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Td);
upClient.RenderControl(writer);
writer.RenderEndTag();
//stuff here
}
我「BindData」方法調用結合不同的下拉列表中的其他綁定方法,這是多麼其中的一個綁定
private void BindData()
{
BindClientTypes();
//binding other drop down lists here
//If an existing record isbeing edited, this method will get the data from db and bind all the controls
BindMEA();
}
private void BindClientTypes()
{
DataTable dt = DB.GetAllClientTypes();
if (dt == null)
{
ltGlobalErrorMsg.Text = GlobalErrorMessage;
ltGlobalErrorMsg.Visible = true;
}
else
{
ddlClient.ClearSelection();
ddlClient.DataSource = dt;
ddlClient.DataValueField = "ID";
ddlClient.DataTextField = "Name";
ddlClient.DataBind();
ddlClient.Items.Insert(0, PleaseSelectItem);
ddlClient.ClearSelection();
}
}
在我BindMEA,我下面
ddlClient.ClearSelection();
ddlClient.Items.FindByValue(objMea.ClientTypeID.ToString()).Selected = true;
我得到它說的錯誤,一個控制不能有兩個選擇指標。但是在任何時候只有一個。下拉的狀態發生了變化,但是當渲染出來時它會彈出。
我不明白爲什麼
謝謝。
如果你不這樣做的.Selected =真會發生什麼。然後選擇哪個項目? – 2009-11-21 19:46:11
您正在清除正確的選擇。我的下一個猜測可能是,你是否在幾個下拉菜單中使用了PleaseSelectItem,這意味着它的相同實例? 請閱讀 - http:// geekswithblogs上的評論。net/ranganh/archive/2006/05/03/77072.aspx – 2009-11-21 19:54:15
是的,我沒有意識到我在不同的地方使用它。 – iJK 2009-11-22 21:25:12