问题6:在datagrid里添加了模板列,模板列里是个imagebutton,点击这个imagebutton要删除该行的数据,请问题如何获取其ID号?
答案:
public void BindToDataGrid()
{
SqlConnection conn = newSqlConnection("....");
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from table",conn);
DataSet ds = new DataSet();
da.Fill(ds,"table");
DataGrid1.DataSource = ds.Tables["table"];
DataGrid1.DataKeyField="ID"; //关键是要加上这句
DataGrid1.DataBind();
}
private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string id = this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
SqlConnection cn=new SqlConnection(…);
cn.Open();
String strSQL="delete from danxuan_all " +" where ID = " + id ;
SqlCommand cm=new SqlCommand(strSQL,cn);
cm.ExecuteNonQuery();
cn.Close();
DataGrid1.EditItemIndex =-1;
LoadGrid();
}
问题7:如何弹出对话框?
答案:
response.write ( "<script language=JavaScript>window.alert('删除成功!');window.location.href='delete.aspx';</script>")
或者:
前台在</body>加入<asp:label id="Message" runat="Server" enableviewstate="False"></asp:label>
后台用:Message.Text="<script language='javascript'>alert('对不起,您不能编辑别人的文章!');</script>";
问题8:ASP.NET中如何生成Excel文件
答案:
private void Button1_Click(object sender, System.EventArgs e)
{
Response.Clear();
Response.Buffer= true;
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}
问题9:显示下面错误是怎么回事?
说明:在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。
分析器错误信息:在应用程序级别以外使用注册为allowDefinition='MachineToApplication'的节是错误的。导致该错误的原因可能是在IIS中没有将虚拟目录作为应用程序进行配置。
答案:
把虚拟目录设置成应用程序:
打开“管理工具——Internet信息服务(IIS)管理器”,找到你的程序的目录,单击右键选择“属性”,在
“应用程序设置”这里,点一下“创建”就行了。
问题10:我用DataGrid分页,设置一下就可以分页了.
但当我在DataGird加入"选择"列后,再点分页页码,就出错:
指定的参数已超出有效值的范围。参数名: index
是在DataGrid1_ItemCommand事件中下面语句的出错
int ID=Convert.ToInt32(e.Item.Cells[2].Text);//这里我把点"选择"的那行的第三列的ID值取出
如果DataGrid不设置分页,上面的ItemCommand事件是没问题的.
什么原因呢?
答案:
void datagrid1_ItemCommand(object src,DataGridItemEventArgs e)
{int ID=Convert.ToInt32(e.Item.Cells[2].Text);}
改为如下:
void datagrid1_ItemCommand(object src,DataGridItemEventArgs e){
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{int ID=Convert.ToInt32(e.Item.Cells[2].Text);}
}
因为点分页控钮后也引发了DataGrid1_ItemCommand这个事件,但是这时候e.Item就是分页按锯所在的行,这个行中只有一个cell,就是分页按钮所在的cell,所以e.Item.Cells[2]肯定超出索引了