Agusto Xaverius P Sipahutar

Job:Making some bugs and patch
Moss/Wss,C#,Sql Server,WWF,K2.BlackPearl
Motto : Keep Study and study
See also: Other Geeks@INDC

News




MCP Logo
MCTS Logo

MCP ID# 3542391

My Curiculum Vitae


Agusto Xaverius P S's Facebook profile

Other Article

My Community

My Article/Share Knowledge

Others Moss/Wss Site

My Other Website/Blogs

My Share (Ebook,etc)

Membuat Web Part dan menggunakan User Controls

Waktu MSDN day ada yang tanya salah satu user ke Sagi apakah harus membuat Web Part tapi kudu harus draw semua nya di web part tersebut. Bagimana bila di page itu cukup rumit dan banyak tampilan design yang di perlukan. Memang waktu itu saya rasa sich pertanyaan itu belum terjawab jadi saya coba jawab disini

bahwa Web Part tersebut bisa kita lakukan konektivitas dengan user control kita yang ada sehingga kita bisa dengan mudah melakukan pembuataan design pada user control kita dan Web part hanya meload user Control itu saja.

Coding nya sbb :

using System;
using System.ComponentModel;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.WebPartPages;

namespace Dms.WebPartLib
{
    public class wpGeneralPart : Microsoft.SharePoint.WebPartPages.WebPart
    {
        private Control _childControl = null;
        private string _userControlVirtualPath = "usercontrols/demo.ascx";
        private string _errMessage= string.Empty;

        public wpGeneralPart()
        { }

        [
          Personalizable(),
          Category("Miscellaneous"),
          DefaultValue(""),
          WebBrowsable(true),
          WebDisplayName("User Control Virtual Path"),
          WebDescription("User Control Virtual Path")
        ]
      

       protected override void RenderWebPart(HtmlTextWriter output)
        {
            if (_errMessage != string.Empty) output.Write(_errMessage);
            if (_userControlVirtualPath != string.Empty || _userControlVirtualPath.Equals("") == false) RenderChildren(output);
        }

        protected override void RenderChildren(HtmlTextWriter output)
        {
            try
            {
                this.EnsureChildControls();
                if (this._childControl != null)
                    this._childControl.RenderControl(output);
            }
            catch (Exception ex)
            {
                _errMessage = string.Format("Exception Message (RenderWebPart) = {0}<br />", ex.Message);
            }
        }

        protected override void CreateChildControls()
        {
            try
            {
                base.CreateChildControls();
                if (_userControlVirtualPath != string.Empty)
                {
                    if (_childControl != null) return;
                    _childControl = Page.LoadControl(_userControlVirtualPath);
                    if (_childControl!=null)
                        Controls.AddAt(0, _childControl);
                }

                /* pada bagian ini ada code load page.LoadControl inilah code untuk menload user control yang ada */

            }
            catch (Exception ex)
            {
                //_errMessage = string.Format("Exception Message (CreateChildControls) = {0}<br />", ex.Message);
            }
        }

        }
}

Nah Webpart akan menload user control demo.ascx, jadi pastikan pathnya benar dan user control dapat bisa di akses.

Share this post: | | | |
Posted: Mar 13 2008, 11:41 AM by agusto | with 4 comment(s)
Filed under:

Comments

Sagi Arsyad said:

me load sebuah user control (ascx) sebagai child control dari web parts...

nice, belum terpikir oleh saya :)

# March 14, 2008 3:47 AM

Ishak said:

yup bisa saja.

or kalo mo lebih mudah. tinggal create usercontrolnya

dan pakai webpart yg namanya smartpart. So, kita tidak usah buat UC dan webpartnya. Cukup buat UC dan assign it ke dalam smartpart. check out : www.u2u.info/.../ViewPost.aspx

# March 14, 2008 9:20 AM

agusto said:

Cuman bisa dipake untuk parsing data dari web part field ke user control tidak. Misalnya gw mau custom pagesize dari gridview gw, nah dengan web part, gw bisa bikin field yang bisa di input waktu edit webpart dan nanti nilai itu di masukkan ke kelas user control gw.

# March 14, 2008 12:09 PM

cacau said:

Wah boz nice tutorial, tp gimana ya kalo ada penggalan koding yang memerlukan koneksi database untuk retrive data? namun untuk dijadikan web part pada wss? mirip dengan yang user control namun perbedaannya disini memerlukan koneksi database, punya ide ?  

# April 4, 2008 1:29 PM