GridView.DataBind()执行时,当前的变量值为空了

wuhan_dotnet 2010-02-02 04:13:46
断点进入DataBind()那里就会跳到GetDataTable()方法里了

protected void Page_Load(object sender, EventArgs e)
{
try
{
SPGridViewData();
CreateSPGridView();
//DocName此时都有值
BindSPGv();
}
catch
{ }

}
private void BindSPGv()
{
try
{
taskGv.DataSourceID = "myDataSource";
taskGv.DataBind();
}
catch { }
}
private void SPGridViewData()
{
myDataSource.ID = "myDataSource";
myDataSource.TypeName = this.GetType().FullName + "," + this.GetType().Assembly.FullName;
myDataSource.SelectMethod = "GetDataTable";

}
public DataSet GetDataTable()
{
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
SPWeb web = site.OpenWeb();
DataSet ds = new DataSet();
try
{
DataTable dt = new DataTable();
SPUser user = web.CurrentUser;
SPQuery query = new SPQuery();

SPList list = web.Lists[DocName]; //这个就没值了
if (user.LoginName != "SHAREPOINT\\system")
{
query.Query = @"<Where><And><Eq><FieldRef Name=""AssignedTo"" LookupId=""TRUE""/><Value Type=""int/User"">" + user.ID.ToString() + @"</Value></Eq><Neq><FieldRef Name=""Status""/><Value Type=""Text"">已完成</Value></Neq></And></Where>";
}
else
{
query.Query = @"<Where><And><Neq><FieldRef Name=""AssignedTo"" LookupId=""TRUE""/><Value Type=""int/User"">" + user.ID.ToString() + @"</Value></Neq><Neq><FieldRef Name=""Status""/><Value Type=""Text"">已完成</Value></Neq></And></Where>";
}
SPListItemCollection items = list.GetItems(query);

if (items != null)
{
dt = items.GetDataTable();
}
ds = new DataSet();
ds.Tables.Add(dt.Copy());

}
catch
{

}
return ds;
}
}

private void CreateSPGridView()
{
// SPGridViewData();
taskGv.Columns.Clear();

taskGv.FilteredDataSourcePropertyFormat = "{1}='{0}'";
taskGv.FilteredDataSourcePropertyName = "FilterExpression";
taskGv.AllowFiltering = true;
taskGv.FilterDataFields = ",,Status";
// taskGv.EnableViewState = false;

TemplateField tlf = new TemplateField();
//GridViewTemplate headTp = new GridViewTemplate(DataControlRowType.Header, "head");
//tlf.HeaderTemplate = headTp;
GridViewTemplate rowTp = new GridViewTemplate(DataControlRowType.DataRow, "datarow");
tlf.ItemTemplate = rowTp;
taskGv.Columns.Add(tlf);

SPBoundField spBf = new SPBoundField();
spBf.DataField = "WorkFlowLink";
spBf.HeaderText = "标题";
taskGv.Columns.Add(spBf);

//SPBoundField spBf = new SPBoundField();
//spBf.DataField = "LinkTitle";
//spBf.HeaderText = "标题";
//taskGv.Columns.Add(spBf);

//spBf = new SPBoundField();
//spBf.DataField = "创建者";
//spBf.HeaderText = "创建者";
//taskGv.Columns.Add(spBf);

spBf = new SPBoundField();
spBf.DataField = "Status";
spBf.HeaderText = "状态";
taskGv.Columns.Add(spBf);

ButtonField btnCol = new ButtonField();
btnCol.Text = "批准";
btnCol.HeaderText = "操作";
btnCol.ButtonType = ButtonType.Link;
btnCol.CommandName = "OnClickComplete";
taskGv.Columns.Add(btnCol);

btnCol = new ButtonField();
btnCol.Text = "拒绝";
btnCol.HeaderText = "操作";
btnCol.ButtonType = ButtonType.Link;
btnCol.CommandName = "OnClickCancel";
taskGv.Columns.Add(btnCol);

CheckBox ckb = new CheckBox();
ckb.AutoPostBack = true;
ckb.ID = "ckbAll";
ckb.CheckedChanged += new EventHandler(ckb_Change);
ckb.Text = "全选/取消";
this.Controls.Add(ckb);
//ckb.Visible = true;
//excelGV.HeaderRow.Cells[0].Controls.Add(ckb);

Button btn = new Button();
btn.Text = "批量批准";
btn.ID = "btnSub";
btn.Click += new EventHandler(Btn_Click);
this.Controls.Add(btn);

btn = new Button();
btn.Text = "批量拒绝";
btn.ID = "btnCancel";
btn.Click += new EventHandler(BtnCancel_Click);
this.Controls.Add(btn);
taskGv.EmptyDataText = "暂时没有新的任务!";

string[] itemIDs = { "ID" };//, "WorkflowItemId"
taskGv.DataKeyNames = itemIDs;



//taskGv.AllowGrouping = true;
//taskGv.AllowGroupCollapse = true;
//taskGv.GroupField = "Status";
//taskGv.GroupDescriptionField = "Status";
//taskGv.GroupFieldDisplayName = "分组:";



}
public string DocName
{
get { return ViewState["listTitle"].ToString(); }
set { ViewState["listTitle"] = value; }
}

...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhan_dotnet 2010-02-02
  • 打赏
  • 举报
回复
不是绑定后。。。是进入断点的GetDataTable()。。。里面需要用到DocName那就没值了
wuhan_dotnet 2010-02-02
  • 打赏
  • 举报
回复
问题就是每次绑定后DocName的值没了。。。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧