FineUI 官方论坛
标题:
Grid的绑定数据取出的问题
[打印本页]
作者:
六脉神剑
时间:
2012-10-30 05:48
标题:
Grid的绑定数据取出的问题
本帖最后由 六脉神剑 于 2012-10-30 05:51 编辑
最近刚开始学web开发,为了方便使用了ExtAspNet,碰到一个情况,
有一个页面允许上传多个文件,文件上传后需要用一个列表展示出来,允许上传者删除文件,允许其他人在浏览的时候下载
我决定使用Grid来实现。
<ext:Grid ID="gridFileList" runat="server" AutoScroll="false" Width="300px" Height="150px"Title="附件列表" ShowHeader="false" > <Columns>
<ext:BoundField DataField="FileName" HeaderText="文件名" Width="230px" />
<ext
inkButtonField HeaderText="删除" Width="60px" CommandName="FileDelete" Text="删除" /> <ext
inkButtonField HeaderText="下载" Width="60px" CommandName="FileDownload" Text="下载" />
</Columns>
</ext:Grid>
示例代码:
///示例1protected void gridFileList_RowCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "FileDelete")
//从列表中删除文件
{
DataTable dt = gridFileList.DataSource as DataTable; //直接DataSource进行类型转换
dt.Rows.RemoveAt(e.RowIndex);
gridFileList.DataBind();
}
}
///示例2
protected void btnUpload_Click(object sender, EventArgs e)
{
string fileName = FileUpload1.ShortFileName;
if (FileUpload1.HasFile)
{
string path = "~/upload/" + fileName;
FileUpload1.SaveAs(Server.MapPath(path));
DataTable dt = CreateTable();
for (int i = 0; i < gridFileList.Rows.Count; i++)
{
GridRow gr = gridFileList.Rows;
string[] objs = gr.Values;
string name = objs[0]; //获得第一个值
DataRow d = dt.NewRow();
d[0] = name;
dt.Rows.Add(d);
}
DataRow dr = dt.NewRow();
dr["FileName"] = fileName;
dt.Rows.Add(dr);
gridFileList.DataSource = dt;
gridFileList.DataBind(); }
else
{
Alert.Show("上传失败,请检查文件是否存在!");
}
}
采用示例1中的方法,我发现尽管Grid中含有数据,我绑定的时候数据源用了一个DataTable, 但是Grid.DataSource为null,使用这个方式无法获得数据,我尝试了在这个页面加了一个成员变量DataTable m_dt,使用如下的代码
if(m_dt==null)
{
m_dt=CreateTable();
}
//上传文件
DataRow dr=m_dt.NewRow();
dr["FileName"]=filename;
m_dt.Rows.Add(dr);
gridFileList.DataSource =m_dt;gridFileList.DataBind();
当上传第一个文件的时候,第一个文件名能够在gridFileList中显示,但是上传第2个文件时,发现列表中只显示了第2个文件名,调试发现,当上传第2个文件的时候,m_dt 为 null,但是在连续2次上传文件中间,并没有做别的操作,也就是说,m_dt应该是包含了一行数据的DataTable
采用 示例2中的方法,使用GridRow.Values的方法来获得,倒是可以取到需要的值,但是这个过于HardCode,不利于代码的读写及维护
有没有比较方便的方式来获取这些已经绑定的数据?
欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/)
Powered by Discuz! X3.4