ASP.NET 常見問題解答

来源:互联网 发布:基于java的cms系统 编辑:程序博客网 时间:2024/05/16 12:46

问题6datagrid里添加了模板列,模板列里是个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>";

 

问题8ASP.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]肯定超出索引了

原创粉丝点击