日期:2014-05-20  浏览次数:20453 次

ASP.NET中使用DATAGRID绑定数据库并分页显示(一)
ASP.NET中使用DATAGRID绑定数据库并分页显示(一)
分页没有什么问题,较为简单。我想请教的问题是:
1:如何在表中显示一个复选框(CHECKBOX)或者单选框(RADIOBUTTON)?这个CHECKBOX的状态是与数据库中某列相绑定的。
2:如果进入编辑状态(通过DATAGRID内置的EDITCOMMAND),如何让某一列从文本状态变为CHECKBOX状态或者RADIOBUTTON状态或者DRAWDOWNLIST下拉列表状态?
3:我想在每一行增加一个[查看详细信息]的链接或者按钮,单击它可以转到其它页面。请问,当我单击时,如何可以获知我单击的是第几行的数据呢?


------解决方案--------------------
1. 加一个模板列
3. 在DataGrid的ItemCommound事件里做点击事件
FindControl找到你的Button,如果每行只有一个Button不须做什么处理,
把要做的操作在这个事件里写就行了
------解决方案--------------------
2.ItemDataBound事件中
DropDownList DDLUd =(DropDownList)e.Item.FindControl( "DDLUserId ");
if(DDLUd != null)
{
string sql = "Select UserID, RealName from User_Admin ";
Database db = new Database();
SqlDataReader sdr = db.RunDataReader(sql);
DataTable tb = new DataTable();
tb.Columns.Add( "RealName ",typeof(string));
tb.Columns.Add( "UserID ",typeof(int));
DataRow dr = tb.NewRow();
while(sdr.Read())
{
dr = tb.NewRow();
dr[0] = sdr[ "RealName "].ToString();
dr[1] = int.Parse(sdr[ "UserID "].ToString());
tb.Rows.Add(dr);
}
DataSet dset = new DataSet();
dset.Tables.Add(tb);
DDLUd.DataSource=dset;
DDLUd.DataTextField=dset.Tables[0].Columns[ "RealName "].ToString();
DDLUd.DataValueField=dset.Tables[0].Columns[ "UserID "].ToString();
DDLUd.DataBind();
DDLUd.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem, "UserID "))).Selected=true;
}
------解决方案--------------------
to 1:
http://community.csdn.net/Expert/topic/5316/5316019.xml?temp=.4860651
protected void show_teaching_manage_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.Header && e.Row.RowType != DataControlRowType.Pager)
{
e.Row.Attributes.Add( "onmouseover ", "this.style.backgroundColor= '#e0e0e0 ' ");
e.Row.Attributes.Add( "onmouseout ", "this.style.backgroundColor= 'White ' ");
e.Row.Style[ "cursor "] = "hand ";

e.Row.Cells[this.show_teaching_manage .Columns.Count -1].Attributes.Add( "onclick ", "return confirm( '确定要删除此知识点? '); ");
}
}
to2
可以直接绑定一个checkbox,也可以模板中
to3:
一般都是遍历一下,或者选中某一行时用数组(也可其他方法)记录一下!