“哈哈,看了你这篇博文http://www.cnblogs.com/insus/archive/2013/01/20/2868211.html,只有效果,但没有结果,我怎样获取选择行的相关记录?”
Insus.NET首先多谢网友对上面那篇博文的关注。解决你的问题,可以尝试获取选择行的索引或是主键即可,能获取到主键,其它字段的值,也可以获取到了。
下图中,高亮选择区,即是针对问题解决而在原在代码添加的部分。一是在DataList控件添加一个DataKeyField,以便获取到它的主键值,另外还添加了两个铵钮及一个Label标答,用来显示选择结果,真正将来你也许用不上标签,因为获取到结果之后,就可以进行你想的要事情了。
两个铵钮事件,都是很简单,Insus.NET相信你能看得懂,如果遇上不明,可以讨论:
{
Button button = (Button)sender;
if (FindControl("DataListConstellation") == null) return;
DataList dlconstellation = (DataList)FindControl("DataListConstellation");
foreach (DataListItem dli in dlconstellation.Items)
{
if (dli.FindControl("RadioButtonSelect") == null) return;
RadioButton rb = (RadioButton)dli.FindControl("RadioButtonSelect");
if (rb.Checked)
{
LabelSelectedResult.Text = string.Format("你执行铵钮'{0}',选择行的索引是:{1}; 主键值是:{2}", button.Text, dli.ItemIndex.ToString(), dlconstellation.DataKeys[dli.ItemIndex].ToString());
break;
}
else
{
LabelSelectedResult.Text = string.Format("你执行铵钮'{0}',没有选择任何一行。", button.Text);
}
}
}
protected void Button2_Click(object sender, EventArgs e)
{
Button button = (Button)sender;
DataList dlconstellation = (DataList)FindControl("DataListConstellation");
for (int i = 0; i < dlconstellation.Items.Count; i++)
{
RadioButton rb = (RadioButton)dlconstellation.Items[i].FindControl("RadioButtonSelect");
if (rb.Checked)
{
LabelSelectedResult.Text = string.Format("你执行铵钮'{0}',选择行的索引是:{1}; 主键值是:{2}", button.Text, i.ToString(), dlconstellation.DataKeys[i].ToString());
break;
}
else
{
LabelSelectedResult.Text = string.Format("你执行铵钮'{0}',没有选择任何一行。", button.Text);
}
}
}
本文链接
FileInfo Fi = new FileInfo(filePath);
if (Fi.Exists)
{
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=1.excel");
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
string path = Server.MapPath("~/") + "";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(obj.Name, System.Text.Encoding.GetEncoding("utf-8")));
Response.ContentType = "application/octet-stream";
Response.WriteFile("" + path + "");
Response.End();
if (fileUpload.HasFile)
{
string savePath = Server.MapPath("~/upload/");
if(!System.IO.Directory.Exists(savePath))
{
System.IO.Directory.CreateDirectory(savePath);
}
savePath = savePath + "\\" + fileUpload.FileName;
fileUpload.SaveAs(savePath);
}
本文链接
虽没有大起大落,但人生还是有得失兼备,之所以要复活,一个原因是失比得要多,所以开始记录这复活的旅程。
既然是复活,那就不会从html开始,为了更好的将知识应用到实践,以一个项目开启复活之路,当然其中会关系到很多东西,比如:SQL、CSS、JS、ASP.NET等,但最重要的是应用了在以前从未使用过的NHibernat for .NET。相信都听说过或者是用过java中的SSH,以我粗糙的了解SSH与NHibernate来看,他们很相似。NHibernate是一个基于.net平台下的ORM,把对象模型与数据库中的表相对应,简单的说就是:一张表对应一个类,操作类的对象就相当于操作表中的一条数据;同时Nhibernate还提供了很多的方法、事务等工具,以便我们操作数据库。好吧,项目开始吧!
一、创建数据库
在这我使用的数据库是SQL2008,新建一个Demo的数据库,在其中新建一张USER表,代码如下:
go
use Demo
go
create table TUser(
Id int identity(1,1) primary key,,
UserName nvarchar(32),
UserPwd nvarchar(32)
)
select * from TUser
如图:
二、编写实体类与映射文件
在VS2010下新建一个项目,然后添加一个Domain的项目,新建一个Model,如下图:
在Model中新建一个实体类User,其代码如下:
public TUser() { }
public virtual int Id{get;set;}
public virtual string UserName{get;set;}
public virtual string UserPwd{get;set;}
}
注意:实体类的的属性应使用virtual 来修饰,这个原因暂还未去研究,应与Nhibernate里的代理有关,先用了再说。
在上图中有一个XML文件,里面是专用来放映射文件的,新建一个xml文件,修改文件名为:TUser.hbm.xml,然后开始编写这个文件,代码如下:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain"
namespace="Domain.Model">