点击按钮弹出系统对话框 我想点击一个button按钮后弹出系统对话框的窗口,选择文件(文件是excel的,顺便问一下怎么固定系统文件选择的文件类型),选好后就上传到服务器上。应该怎么做? 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考如下:1. this.openFileDialog1.Filter = "excel文件(*.xls)|*.xls";=========================================================================2. if (listView1.SelectedItems.Count > 0) { ds.Tables["wg"].Clear(); da = new SqlDataAdapter("select * from bg_wjgl where wjbh ='" + listView1.SelectedItems[0].SubItems[1].Text.Trim() + "'", bg_wlrh.sqlcn); da.Fill(ds, "wg"); string filename = Application.StartupPath.Trim() + "\\" + ds.Tables["wg"].Rows[0]["wjmc"].ToString().Trim() + ds.Tables["wg"].Rows[0]["wjetx"].ToString().Trim(); //MessageBox.Show(filename); Byte[] byteBLOBData = new Byte[0]; byteBLOBData = (Byte[])ds.Tables["wg"].Rows[0]["wjlr"]; try { FileStream fs = new FileStream(filename, FileMode.OpenOrCreate); fs.Write(byteBLOBData, 0, byteBLOBData.Length);//写入文件 fs.Close(); System.Diagnostics.ProcessStartInfo myFun = new System.Diagnostics.ProcessStartInfo(filename); System.Diagnostics.Process fun = System.Diagnostics.Process.Start(myFun); fun.WaitForExit(); //------------------------------保存文件------------------------------------- fs = new FileStream(filename, FileMode.Open); byte[] myData = new Byte[fs.Length]; fs.Position = 0; fs.Read(myData, 0, Convert.ToInt32(fs.Length)); //------------------------------------------------------------------- //---------------------------------------------------------- bg_wlrh.sqlcn.Open(); cmd = new SqlCommand("update bg_wjgl set wjlr=@wjlr where wjbh='" + listView1.SelectedItems[0].SubItems[1].Text.Trim() + "'", bg_wlrh.sqlcn); cmd.Parameters.Add("@wjlr", SqlDbType.Image); cmd.Parameters["@wjlr"].Value = myData; cmd.ExecuteNonQuery(); bg_wlrh.sqlcn.Close(); fs.Close(); //---------------------------------------------------------- File.Delete(filename); } catch (Exception ee) { MessageBox.Show(ee.Message); } } select * from bg_wjgl where wjbh ='" + listView1.SelectedItems[0].SubItems[1].Text.Trim() + "'", bg_wlrh.sqlcn楼上的 这句代码是什么意思?我是想把上传的excel文件导入到数据库中 现在在解决第一步导入的问题 //导入文件跟导入图片的原理是一样的,参考类似的帖子:http://community.csdn.net/Expert/topic/5476/5476448.xml?temp=.8799097//参考这段导入文件到数据库,跟导入图片是一样的。字段类型设为Image===================================================================================== this.openFileDialog1.Filter = "Excel文件(.xls)|*.xls"; this.openFileDialog1.Multiselect = false; if (this.openFileDialog1.ShowDialog() == DialogResult.OK) { //------------------------------------------------------------------- FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open); byte[] myData = new Byte[fs.Length]; fs.Position = 0; fs.Read(myData, 0, Convert.ToInt32(fs.Length)); //------------------------------------------------------------------- bg_wlrh.sqlcn.Open(); cmd = new SqlCommand("insert into bg_wjgl(wjlr) values (@wjlr)", bg_wlrh.sqlcn); cmd.Parameters.Add("@wjlr", SqlDbType.Image); cmd.Parameters["@wjlr"].Value = myData; cmd.ExecuteNonQuery(); bg_wlrh.sqlcn.Close(); ClearListView(); wjda.Fill(ds, "wj"); //CreateListView(); fs.Close();//关闭文件 km_yu 谢谢你 不过openFileDialog1是个什么控件?第一步是弹出系统对话框 我还不知道怎么做 看别人说用type=file这样我没有办法在后台写响应事件 所以想用button实现 这样又不知道怎么弹出系统对话框 是web下的file field的后台响应事件应该怎么写啊? //声明就可以了,或者从工具箱里面拖到表单private System.Windows.Forms.OpenFileDialog openFileDialog1; private void button1_Click(object sender, EventArgs e) { //上面那段代码 } km_yu 我是webform的项目 没有OpenFileDialog这个控件 还是谢谢你! 其实这些都可以用JS实现 <input type="file" style="display:none;" onchange="return Check();" id="File1"/><input type="button" onclick="OpenMyDialog" value="按钮"/><script language="JavaScript">function OpenMyDialog(){ document.getElementById("File1").click();//不知道最后那个括号要不,忘了}function Check(){ var obj=document.getElementById("File1"); if(obj.value!="") { var objExp=obj.value.substring(obj.value.lastIndexOf(".")+1,obj.value.length); if(objExp.toUpperCase()=="XLS") { ..... return true; } else { alert("不支持此类型的文件"); return false; } }}</script>-----------如果你是想点File1弹出的话那么就不要那个Button了,File的style去掉,如果要操作数据库的话把File1后加个属性 runat="Server",上传文件到服务器或者是数据库中什么的我就不多说了,相信网上很多 O15013245O(懒得起昵称) 太感谢你了 我要的就是这种效果!if(objExp.toUpperCase()=="XLS") { ..... return true; }因为我对JS不是很明白 能告诉我在.....的部分怎么向后台传值吗? C#的Math.Sin()方法的问题...求解 .net程序打包有没有添加自己的信息的 怎样理解委托是"安全"的? 这么简单的问题,究竟错在哪里? 请问QQ的消息接收是怎么实现的? richtextbox打印控制??? 在设计器时如何保存自定义的CollectionBase的Items的内容? 有两个关于SOCKET的问题请教。 水晶报表里面的一个小问题 为什么if判断会显示无效的表达式项。。 请教C++与C#之间的类型转换问题,谢谢!!!! asp.net在线配置IIS服务器
1. this.openFileDialog1.Filter = "excel文件(*.xls)|*.xls";
=========================================================================
2. if (listView1.SelectedItems.Count > 0)
{
ds.Tables["wg"].Clear();
da = new SqlDataAdapter("select * from bg_wjgl where wjbh ='" + listView1.SelectedItems[0].SubItems[1].Text.Trim() + "'", bg_wlrh.sqlcn);
da.Fill(ds, "wg");
string filename = Application.StartupPath.Trim() + "\\" + ds.Tables["wg"].Rows[0]["wjmc"].ToString().Trim() + ds.Tables["wg"].Rows[0]["wjetx"].ToString().Trim();
//MessageBox.Show(filename);
Byte[] byteBLOBData = new Byte[0];
byteBLOBData = (Byte[])ds.Tables["wg"].Rows[0]["wjlr"];
try
{
FileStream fs = new FileStream(filename, FileMode.OpenOrCreate);
fs.Write(byteBLOBData, 0, byteBLOBData.Length);//写入文件
fs.Close();
System.Diagnostics.ProcessStartInfo myFun = new System.Diagnostics.ProcessStartInfo(filename);
System.Diagnostics.Process fun = System.Diagnostics.Process.Start(myFun);
fun.WaitForExit();
//------------------------------保存文件-------------------------------------
fs = new FileStream(filename, FileMode.Open);
byte[] myData = new Byte[fs.Length];
fs.Position = 0;
fs.Read(myData, 0, Convert.ToInt32(fs.Length)); //-------------------------------------------------------------------
//----------------------------------------------------------
bg_wlrh.sqlcn.Open();
cmd = new SqlCommand("update bg_wjgl set wjlr=@wjlr where wjbh='" + listView1.SelectedItems[0].SubItems[1].Text.Trim() + "'", bg_wlrh.sqlcn);
cmd.Parameters.Add("@wjlr", SqlDbType.Image);
cmd.Parameters["@wjlr"].Value = myData;
cmd.ExecuteNonQuery();
bg_wlrh.sqlcn.Close();
fs.Close();
//----------------------------------------------------------
File.Delete(filename);
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
}
楼上的 这句代码是什么意思?
我是想把上传的excel文件导入到数据库中 现在在解决第一步导入的问题
http://community.csdn.net/Expert/topic/5476/5476448.xml?temp=.8799097
//参考这段导入文件到数据库,跟导入图片是一样的。字段类型设为Image
=====================================================================================
this.openFileDialog1.Filter = "Excel文件(.xls)|*.xls";
this.openFileDialog1.Multiselect = false;
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
//-------------------------------------------------------------------
FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open);
byte[] myData = new Byte[fs.Length];
fs.Position = 0;
fs.Read(myData, 0, Convert.ToInt32(fs.Length));
//------------------------------------------------------------------- bg_wlrh.sqlcn.Open();
cmd = new SqlCommand("insert into bg_wjgl(wjlr) values (@wjlr)", bg_wlrh.sqlcn);
cmd.Parameters.Add("@wjlr", SqlDbType.Image);
cmd.Parameters["@wjlr"].Value = myData;
cmd.ExecuteNonQuery();
bg_wlrh.sqlcn.Close();
ClearListView();
wjda.Fill(ds, "wj");
//CreateListView();
fs.Close();//关闭文件
第一步是弹出系统对话框 我还不知道怎么做 看别人说用type=file
这样我没有办法在后台写响应事件 所以想用button实现 这样又不知道怎么弹出系统对话框
file field的后台响应事件应该怎么写啊?
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private void button1_Click(object sender, EventArgs e)
{
//上面那段代码
}
<input type="file" style="display:none;" onchange="return Check();" id="File1"/>
<input type="button" onclick="OpenMyDialog" value="按钮"/>
<script language="JavaScript">
function OpenMyDialog()
{
document.getElementById("File1").click();//不知道最后那个括号要不,忘了
}
function Check()
{
var obj=document.getElementById("File1");
if(obj.value!="")
{
var objExp=obj.value.substring(obj.value.lastIndexOf(".")+1,obj.value.length); if(objExp.toUpperCase()=="XLS")
{
.....
return true;
}
else
{
alert("不支持此类型的文件");
return false;
}
}
}
</script>
-----------
如果你是想点File1弹出的话那么就不要那个Button了,File的style去掉,如果要操作数据库的话把File1后加个属性 runat="Server",上传文件到服务器或者是数据库中什么的我就不多说了,相信网上很多
if(objExp.toUpperCase()=="XLS")
{
.....
return true;
}
因为我对JS不是很明白 能告诉我在.....的部分怎么向后台传值吗?