FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 2442|回复: 0
打印 上一主题 下一主题

Grid的绑定数据取出的问题

[复制链接]
跳转到指定楼层
楼主
发表于 2012-10-30 05:48:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 六脉神剑 于 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" />      
<extinkButtonField HeaderText="删除" Width="60px" CommandName="FileDelete" Text="删除" />       <extinkButtonField 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 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-9-28 20:08 , Processed in 0.043151 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表