一个关于Datalist“选择”纪录的问题,高手们帮我一下,小弟在线等,在线结分¥¥¥¥
我用datalist的显示“文章主题”,然后单击“详细”后显示内容,是用SelectedItemTemplate完成的,但是在单击“详细”后整个页面后呈现空白,什么内容也没有!
主要代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
userName = Convert.ToString(Session[ "userName "]);
userFlag = Convert.ToInt32(Session[ "userFlag "]);
c_id = Convert.ToInt32(Request.QueryString[ "cid "].ToString());
SelectCorName(); //将名称取出
checkUser(); //用户权限检查
}
}
protected void SelectCorName() //将名称取出
{
SqlConnection conn = userOperate.createconn();
SqlDataAdapter adp = new SqlDataAdapter();
string strsql = "select c_name from client where c_id= " + c_id; ;
adp.SelectCommand = new SqlCommand(strsql, conn);
DataSet ds = new DataSet();
adp.Fill(ds, "myClient ");
this.hlCorName.Text = ds.Tables[ "myClient "].Rows[0][0].ToString();
this.hlCorName.NavigateUrl = "~/ShowCor.aspx?cid= " + c_id;
}
protected void BindDataList() //数据绑定
{
SqlConnection conn = userOperate.createconn();
SqlDataAdapter adp = new SqlDataAdapter();
string strsql = "select * from event where c_id= " + c_id;
if (userFlag==1)
{
strsql = "select * from event where c_id= " + c_id;
//Response.Write(strsql);
}
else
{
strsql += "and e_person= ' " + userName + " ' ";
strsql += "order by e_time desc ";
}
adp.SelectCommand = new SqlCommand(strsql, conn);
DataSet ds = new DataSet();
adp.Fill(ds, "MyEvent ");
this.DataList1.DataSource = ds.Tables[ "MyEvent "].DefaultView;
this.DataList1.DataBind();
}
protected void checkUser() //判断用户是否有权限查看该记录
{
int countData = 0;
int countPeople = 0;
SqlConnection conn = userOperate.createconn();
SqlDataAdapter adp = new SqlDataAdapter();
string sqlPeople = "select count(*) from event where c_id= " + c_id;
if(userFlag==1)
{
sqlPeople = "select count(*) from event where c_id= " + c_id;
//Response.Write(sqlPeople);
}
else
{
sqlPeople += "and e_person= ' " + userName + " ' ";
//Response.Write(sqlPeople);
}
conn.Open();
SqlCommand cmd = new SqlCommand(sqlPeople, conn);
countPeople = Convert.ToInt32(cmd.ExecuteScalar());
string sqlData = "select count(*) from event where c_id= " + c_id;
SqlCommand cmd2 = new SqlCommand(sqlData, conn);
countData = Convert.ToInt32(cmd2.ExecuteScalar());
conn.Close();
if (countData==0) //没有纪录
{
Response.Write( " <script language= 'javascript '> alert( '很遗憾,没有纪录! ');window.history.go(-1); </script> ");
}
else
{
if (countPeople == 0)
{
Response.Write( " <script language= 'javascript '> alert( '很抱歉,你无权查看! ');window.history.go(-1); </script> ");
}
else
{
BindDataList();
}
}
}
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "SelectContent ") //单击“详细”
{
DataList1.SelectedIndex = e.Item.ItemIndex;
}
else
{
if (e.CommandName == "Close ") //单击“关闭”
{
DataList1.SelectedIndex = -1;
}
}
BindDataList();
}
}
补充一下,该datalist绑定纪录是通过前面传值并接受后查询数据库中的相应纪录!
是不是跟这个有关系呢?
[解决办法]
if (e.CommandName == "SelectContent ") //单击“详细”
{
DataList1.SelectedIndex = e.Item.ItemIndex;
BindDataList() ;
}