首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

自定义webpart部件有关问题

2012-03-09 
自定义webpart部件问题小弟自定义一个webpart,用来读取列表数据并绑定到gridview上,一直通不过去,页面提示

自定义webpart部件问题
小弟自定义一个webpart,用来读取列表数据并绑定到gridview上,一直通不过去,页面提示:值不在预期的范围内。
不清楚到底错在哪了,请各位指导下,谢谢了。

C# code
using System;using System.Collections.Generic;using System.ComponentModel;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Microsoft.SharePoint.WebPartPages;using Microsoft.SharePoint;using System.Data;using System.Xml.Serialization;namespace MyWebPart{    [XmlRoot(Namespace = "MyWebPart")]      [DefaultProperty("Text")]    [ToolboxData("<{0}:WebPartTest runat=server></{0}:WebPartTest>")]        public class WebPartTest : WebPart    {        [Bindable(true)]        [Category("Appearance")]        [DefaultValue("")]        [Localizable(true)]        protected Label label;        protected GridView gridview;        public string Text        {            get            {                String s = (String)ViewState["Text"];                return ((s == null) ? "[" + this.ID + "]" : s);            }            set            {                ViewState["Text"] = value;            }        }        protected override void RenderWebPart(HtmlTextWriter output)        {            //base.RenderWebPart(output);            RenderChildren(output);        }        protected override void CreateChildControls()        {            //base.CreateChildControls();            label = new Label();            label.Text = "This is a webpart test...";            Controls.Add(label);            gridview = new GridView();            gridview.Load += new EventHandler(GridViewLoad);            gridview.AutoGenerateColumns = true;            Controls.Add(gridview);        }        public void GridViewLoad(object sender, EventArgs e)        {            BindGridView();        }        private void BindGridView()        {            using (SPWeb web = SPContext.Current.Web)            {                SPList list = web.Lists["列表001"];                if (list != null)                {                    SPQuery spquery = new SPQuery();                    gridview.DataSource = list.GetItems(spquery).GetDataTable();                    gridview.DataBind();                }                else                {                   // label.Text = "no list....";                }            }            throw new NotImplementedException();        }    }}


[解决办法]
应该是这句代码的问题
SPList list = web.Lists["列表001"];
你可以使用下面的方式,然后再判断
SPList list = null;
try
{
 list = web.Lists["列表001"];
}
catch{}
if(list != null)
{
 //......
}
[解决办法]
探讨
找不到list就报这个错误,找到了会正常显示....
System.Exception: 引发类型为“System.Exception”的异常。 在 MyWebPart.WebPartTest.BindGridView() 在 MyWebPart.WebPartTest.GridViewLoad(Object sender, EventArgs e) 在 System.Web.UI.Control.OnLoad(EventArgs e) 在 System.Web.UI.WebControls.DataBoundControl.OnLoad(EventArgs e) 在 System.Web.UI.Control.LoadRecursive() 在 System.Web.UI.Control.AddedControl(Control control, Int32 index) 在 System.Web.UI.ControlCollection.Add(Control child) 在 MyWebPart.WebPartTest.CreateChildControls()


[解决办法]
jf

热点排行