BoundColumn col1=new BoundColumn();
for (int i=0;i<DGrid_jg.Items.Count;i++)
{
col1=(BoundColumn)DGrid_jg.Items[i];
col1.DataField="SightID";
}编译提示:无法将类型“System.Web.UI.WebControls.DataGridItem”转换为“System.Web.UI.WebControls.BoundColumn”如果把col1的col1=(BoundColumn)DGrid_jg.Items[i];放在循环外面写成col1=(BoundColumn)DGrid_jg.Items[1];编译就能通过,但结果没有赋值(循环已执行)
for (int i=0;i<DGrid_jg.Items.Count;i++)
{
col1=(BoundColumn)DGrid_jg.Items[i];
col1.DataField="SightID";
}编译提示:无法将类型“System.Web.UI.WebControls.DataGridItem”转换为“System.Web.UI.WebControls.BoundColumn”如果把col1的col1=(BoundColumn)DGrid_jg.Items[i];放在循环外面写成col1=(BoundColumn)DGrid_jg.Items[1];编译就能通过,但结果没有赋值(循环已执行)
col1=(BoundColumn)DGrid_jg.Items[i].cell[0];
既然是 DataGrid 里已经有的 Column,为什么要再 new 一个呢??for (int i=0;i<DGrid_jg.Items.Count;i++)
col1=(BoundColumn)DGrid_jg.Items[i];
既然是对 Column 做处理,为什么取的确是 Item 呢?应该用 Columns。for (int i=0;i<DGrid_jg.Items.Count;i++)
用了循环?你想对所有 BoundColumn 的所有 DataField 赋同样的值?
编译通过,但似乎值没赋进去。
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Configuration;//------------------------------------------------------------------------------------------------------//
// 程序设计:陈丹
// 最后修改:2004-10-20
// 主要功能:含有图片字段的数据库维护列表,用于维护景观设计、资质证书。
//------------------------------------------------------------------------------------------------------//namespace WebAppZHLY.admin
{
/// <summary>
/// jgwh 的摘要说明。
/// </summary>
public class jgwh : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Btn_delall;
protected System.Web.UI.WebControls.CheckBox CheckBox_selall;
protected System.Web.UI.WebControls.DataGrid DGrid_jg;
private void Page_Load(object sender, System.EventArgs e)
{
if (! Page.IsPostBack)
{
string tablename="";
Session["nowpage"]=Request.QueryString["formpg"];
string page=Session["nowpage"].ToString(); // BoundColumn col1=new BoundColumn();
HyperLink col2=new HyperLink(); if (page=="jgwh") //景观设计
{
tablename="Sight";
}
else if (page=="zswh") //资质证书维护
{
tablename="aptitude";
} DGrid_jg.AlternatingItemStyle.BackColor=Color.White;
string connstr=(string)ConfigurationSettings.AppSettings["connstr"];
SqlConnection conn=new SqlConnection(connstr);
conn.Open(); SqlCommand cmd=new SqlCommand("sel_all",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@Tablename",SqlDbType.VarChar);
cmd.Parameters.Add("@wherestr",SqlDbType.VarChar);
cmd.Parameters["@Tablename"].Value=tablename;
cmd.Parameters["@wherestr"].Value=""; DGrid_jg.DataSource=cmd.ExecuteReader();
DGrid_jg.DataBind(); cmd.Connection.Close();
cmd.Connection.Open(); SqlDataReader reader=cmd.ExecuteReader(); for (int i=0;i<DGrid_jg.Items.Count;i++)
{
BoundColumn col1=(BoundColumn)DGrid_jg.Columns[1];
col2=(HyperLink)DGrid_jg.Items[i].FindControl("HLink1"); reader.Read();
if (page=="jgwh") //景观设计
{
col1.DataField="SightID";
col2.NavigateUrl="edit_jg.aspx?id="+reader["SightID"]+"&picname="+reader["Sig_name"];
col2.Text=reader["Sig_name"].ToString();
}
else if (page=="zswh") //资质证书维护
{
col1.DataField="AptitudeID";
col2.NavigateUrl="edit_jg.aspx?id="+reader["AptitudeID"]+"&picname="+reader["Aname"];
col2.Text=reader["Aname"].ToString();
}
}
} } #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}
aspx:……
<FONT face="宋体">
<asp:datagrid id="DGrid_jg" runat="server" AutoGenerateColumns="False" Width="102%" ItemStyle-CssClass="DGrid_admin_I" HeaderStyle-CssClass="DGrid_admin_H">
<Columns>
<asp:TemplateColumn HeaderText="选择" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox ID="sel" Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="" HeaderText="编号" ItemStyle-HorizontalAlign="Center" />
<asp:TemplateColumn HeaderText="景观名称">
<ItemTemplate>
<asp:HyperLink ID="HLink1" Runat="server" NavigateUrl=''></asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid></FONT>
……
BoundColumn col1=(BoundColumn)
---
如果既有 BoundColumn 又有 HyperLinkColumn,那你做强制转换岂不是会抛 InvalidCastException??我现在按照你的说法去掉了new 语句,并改成了BoundColumn col1=(BoundColumn)DGrid_jg.Columns[0];
编译通过,但似乎值没赋进去。
---
如果如前所述,抛异常了,当然赋不进。
如果没抛异常,那么就是你这段代码执行的位置不对,或者说是你放置的位置不对。
manbaum() 救命啊………………分不够再加啊
你的这些赋值操作不会写到Datagrid_ItemDataBound事件里面吗?
foreach(DataRow next in ds.Tables[0].Rows)
{
next[index]=你想要的值;
}
或者在datagrid的ItemDataBound()事件中
datagrid_ItemDataBound(...)
{
if(e.Item.ItemType==ListItemType.Item || ....)
{
e.Item.Cells[index].Text="你想要的值";
}
}
switch (e.Item.ItemType)
{
case ListItemType.Item:
case ListItemType.AlternationItem:
case ListItemType.SelectedItem:
string SightID = (string)DataBinder.Eval(e.Item, "DataItem.SightID");
string Sig_name = (string)DataBinder.Eval(e.Item, "DataItem.Sig_name");
HyperLink c = (HyperLink)e.Item.FindControl("HLink1");
c.NavigateUrl = string.Format("edit_jg.aspx?id={0}&picname={1}", SightID, Sig_name);
break;
}
如果你有更好的写法,告诉我,我另外给分(50)。manbaum() :
找到原因了,的确是位置没放对,现在把
BoundColumn col1=(BoundColumn)DGrid_jg.Columns[1];
col1.DataField="SightID";
两句放到了绑定前就对了,思路性错误,呵,结贴了
你到这里接分
http://community.csdn.net/Expert/topic/3478/3478571.xml?temp=.2016565