1.前台代码: <% ... @ Control Language="C#" AutoEventWireup="true" CodeFile="ImageControl.ascx.cs" Inherits="usercontrol_ImageControl" %> <% ... @ Register Src="FolderTree.ascx" TagName="FolderTree" TagPrefix="uc2" %> <% ... @ Register Src="DepartPageControl.ascx" TagName="DepartPageControl" TagPrefix="uc1" %> < script type ="text/javascript" > ... //<![CDATA[ function CheckAll(oCheckbox) ...{ var GridView2 = document.getElementById("<%=GridView1.ClientID %>"); for(i = 1;i < GridView2.rows.length; i++) ...{ GridView2.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked = oCheckbox.checked; } } function takePostion(ln,dn) ...{ var obj = document.getElementById(dn); var tipDiv = obj; mouseX = event.x + document.body.scrollLeft; mouseY = event.y + document.documentElement.scrollTop; with (tipDiv.style) ...{ display='block'; left=parseInt(mouseX)+"px"; top=(parseInt(mouseY)+20)+"px"; position='absolute'; } } function hidden(ln,dn) ...{ var obj = document.getElementById(dn); with(obj.style) ...{ display="none"; } } //]]> </ script > < base target ="_self" /> < center > < table style ="width: 66%" > < tr > < td style ="height: 60px; text-align: center" > </ td > < td style ="height: 60px; text-align: center" > < strong >< span style ="font-size: 14pt" > 插入图片 </ span ></ strong ></ td > </ tr > < tr > < td style ="height: 60px; text-align: center" > </ td > < td style ="height: 60px; text-align: center" > < asp:RadioButtonList ID ="radbtnUpload" runat ="server" AutoPostBack ="True" OnSelectedIndexChanged ="radbtnUpload_SelectedIndexChanged" RepeatDirection ="Horizontal" > < asp:ListItem Selected ="True" > 从图片库中选图片 </ asp:ListItem > < asp:ListItem > 上传新图片 </ asp:ListItem > </ asp:RadioButtonList ></ td > </ tr > < tr > < td rowspan ="1" style ="vertical-align: top; text-align: left" > < asp:TreeView ID ="TreeView1" runat ="server" OnSelectedNodeChanged ="TreeView1_SelectedNodeChanged" ShowLines ="True" Font-Size ="9pt" ForeColor ="#000000" > < SelectedNodeStyle ForeColor ="Red" /> </ asp:TreeView > </ td > < td style ="text-align: center" > < asp:Panel ID ="Panel1" runat ="server" Width ="100%" > < table style ="width: 100%" > < tr > < td colspan ="3" style ="text-align: center" > < table width ="100%" > < tr > < td colspan ="3" style ="height: 21px; text-align: left" > < asp:GridView ID ="GridView1" runat ="server" DataKeyNames ="序号" CssClass ="table" AllowPaging ="True" OnRowDataBound ="GridView1_RowDataBound" PageSize ="5" AutoGenerateColumns ="False" Width ="100%" > < Columns > < asp:TemplateField > < HeaderTemplate > < input id ="Checkbox2" runat ="server" onclick ="CheckAll(this)" type ="checkbox" visible ="false" /> </ HeaderTemplate > < ItemTemplate > < asp:CheckBox ID ="ItemCheckBox" name ="R_Check" runat ="server" Visible ="False" /> < asp:LinkButton ID ="lnkSelect" runat ="server" CommandName ="Select" OnCommand ="lnkSelect_Command" > 选择 </ asp:LinkButton > </ ItemTemplate > </ asp:TemplateField > < asp:TemplateField HeaderText ="图片" > < EditItemTemplate > < asp:TextBox ID ="TextBox1" runat ="server" Text ='<%# Eval("完整路径") % > '> </ asp:TextBox > </ EditItemTemplate > < ItemTemplate > < asp:Image ID ="Image1" runat ="server" Height ="40px" ImageUrl ='<%# Eval("完整路径") % > ' Width="35px" /> </ ItemTemplate > < ItemStyle HorizontalAlign ="Center" Width ="45px" /> </ asp:TemplateField > < asp:BoundField DataField ="路径" HeaderText ="图片说明" > </ asp:BoundField > < asp:BoundField DataField ="序号" HeaderText ="序号" /> < asp:BoundField DataField ="完整路径" HeaderText ="完整路径" /> </ Columns > < PagerSettings Visible ="False" /> </ asp:GridView > </ td > </ tr > < tr > < td colspan ="3" style ="height: 21px; text-align: right" > < asp:LinkButton ID ="lnkbtnFrist" runat ="server" OnClick ="lnkbtnFrist_Click" > 首页 </ asp:LinkButton > < asp:LinkButton ID ="lnkbtnPre" runat ="server" OnClick ="lnkbtnPre_Click" > 上一页 </ asp:LinkButton > < asp:Label ID ="lblCurrentPage" runat ="server" ></ asp:Label > < asp:LinkButton ID ="lnkbtnNext" runat ="server" OnClick ="lnkbtnNext_Click" > 下一页 </ asp:LinkButton > < asp:LinkButton ID ="lnkbtnLast" runat ="server" OnClick ="lnkbtnLast_Click" > 尾页 </ asp:LinkButton > 跳转到第 < asp:DropDownList ID ="ddlCurrentPage" runat ="server" AutoPostBack ="True" OnSelectedIndexChanged ="ddlName_SelectedIndexChanged" > </ asp:DropDownList > 页 </ td > </ tr > </ table > < asp:Button ID ="btnOutPut" runat ="server" Text =" 确 定 " OnClick ="btnOutPut_Click" CssClass ="button_skin" Visible ="False" /></ td > </ tr > </ table > </ asp:Panel > < asp:Panel ID ="Panel2" runat ="server" Visible ="False" Width ="100%" > < table style ="width: 100%" > < tr > < td colspan ="3" style ="text-align: center" > < input id ="File1" type ="file" runat ="server" class ="button_skin" /> < asp:Button ID ="btnUpImage" runat ="server" OnClick ="btnUpImage_Click" Text =" 上 传 " CssClass ="button_skin" /></ td > </ tr > </ table > </ asp:Panel > </ td > </ tr > </ table > </ center > < script src ="wz_tooltip.js" type ="text/javascript" ></ script > < div id ='d' style ='display:none; padding:3px; border-color:#0066ff; border-style:dashed; border-width:1px;" align =left' >< img id ="showmaximg" src ='' alt ="图片" /></ div > <!-- <div id='d' style='display:none;OVERFLOW: auto; WIDTH: 260px; HEIGHT: 300px' align="left"><img id="showmaximg" src='' /></div> --> 2.后台代码: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; using Microsoft.SharePoint; using yesinda.yesindakms.sharepoint; using yesinda.yesindakms.sharepoint.List; public partial class usercontrol_ImageControl : System.Web.UI.UserControl ... { public string ReturnValue = String.Empty; private SPSite site; private SPWeb web; private SPList list; private SPListItemCollection items; private string FolderPath = "/dept/gsb/DocLib4"; private string siteUrl = "/dept/gsb/"; public string SiteUrl ...{ get ...{ return this.siteUrl; } set ...{ siteUrl = value; } } private string listName = "图片"; public string ListName ...{ get ...{ return this.listName; } set ...{ listName = value; } } protected void Page_Load(object sender, EventArgs e) ...{ if (!IsPostBack) ...{ ViewState["path"] = FolderPath; //GetFolder(); BindGrid(); site = ListLib.findParamSite(siteUrl, Context); web = site.OpenWeb(); list = web.Lists[listName]; items = list.Items; SPFolder root = list.RootFolder; TreeNode rootNode = new TreeNode(listName, root.Url); TreeView1.Nodes.Add(rootNode); AddChild(root, rootNode); } } 创建数据源#region 创建数据源 /**//// <summary> /// 创建数据源 /// </summary> /// <returns></returns> ICollection CreateDataSource(string folderpath) ...{ DataTable dt = new DataTable("mytable"); //创建一个名为mytable的DataTable对象形 DataColumn dc = new DataColumn(); //创建一个列对象 dc.DataType = System.Type.GetType("System.Int32"); //指定该列的数据类型 dc.AutoIncrement = true; //该列为自动增涨列 dc.AutoIncrementSeed = 1; //初始值 dc.AutoIncrementStep = 2; //增量 dc.Caption = "id"; //设置列的标题 dc.ColumnName = "序号"; //设置 列集合对象中的列的名称,datagrid中显示该列名. dt.Columns.Add(dc); //将该列对象加入到表mytable的列集合中 //普通列 DataColumn dc1 = new DataColumn(); dc1.DataType = System.Type.GetType("System.String"); dc1.AllowDBNull = false; dc1.Caption = "path"; dc1.ColumnName = "路径"; dt.Columns.Add(dc1); DataColumn dc2 = new DataColumn(); dc2.DataType = System.Type.GetType("System.String"); dc2.AllowDBNull = false; dc2.Caption = "path"; dc2.ColumnName = "完整路径"; dc2.DefaultValue = 25; dt.Columns.Add(dc2); SPSite sps = yesinda.yesindakms.sharepoint.List.ListLib.findParamSite("/dept/gsb/", this.Context); sps.AllowUnsafeUpdates = true; SPWeb spw = sps.OpenWeb(); spw.AllowUnsafeUpdates = true; SPList list = spw.Lists["图片"]; SPFolder folder = list.RootFolder; SPFolder f = spw.GetFolder(folderpath); foreach (SPFile file in f.Files) ...{ if (dt != null) ...{ DataRow dr = dt.NewRow(); dr[0] = file.Item.ID; dr[1] = file.Name; dr[2] = "http://" + sps.HostName + file.ServerRelativeUrl; dt.Rows.Add(dr); } } DataView dv = new DataView(dt); return dv; } #endregion 绑定TreeView#region 绑定TreeView private void AddChild(SPFolder parentFolder, TreeNode parentNode) ...{ if (parentFolder.SubFolders.Count == 0) return; foreach (SPFolder f in parentFolder.SubFolders) ...{ if (f.Name != "Forms" && f.Name.IndexOf("_") != 0) ...{ TreeNode child = new TreeNode(f.Name, f.ServerRelativeUrl); parentNode.ChildNodes.Add(child); AddChild(f, child); } } } protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) ...{ ViewState["path"] = this.TreeView1.SelectedNode.Value; BindGrid(); } #endregion public void BindGrid() ...{ this.GridView1.DataKeyNames = new string[] ...{ "序号" }; this.GridView1.DataSource = CreateDataSource(ViewState["path"].ToString()); this.GridView1.DataBind(); this.ddlCurrentPage.Items.Clear(); for (int i = 1; i <= this.GridView1.PageCount; i++) ...{ this.ddlCurrentPage.Items.Add(i.ToString()); } if (this.GridView1.PageIndex != 0) ...{ this.ddlCurrentPage.SelectedIndex = this.GridView1.PageIndex; } } protected void btnUpImage_Click(object sender, EventArgs e) ...{ AddImage(); } 上传图片#region 上传图片 //保存图片路径 public static string ImageUrl = String.Empty; /**//// <summary> /// 上传图片到图片库 /// </summary> public void AddImage() ...{ if (File1.Value != "") ...{ //上传附件添加到文档库,并返回ID,赋给model.Mattachment string filename = File1.PostedFile.FileName.Substring(File1.PostedFile.FileName.LastIndexOf("/") + 1); Stream filedataStream = File1.PostedFile.InputStream; int dataLen = File1.PostedFile.ContentLength; string fileType = File1.PostedFile.ContentType; byte[] fileData = new byte[dataLen]; filedataStream.Read(fileData, 0, dataLen); SPSite sps = yesinda.yesindakms.sharepoint.List.ListLib.findParamSite("/dept/gsb/", this.Context); sps.AllowUnsafeUpdates = true; SPWeb spw = sps.OpenWeb(); spw.AllowUnsafeUpdates = true; SPList list = spw.Lists["图片"]; SPFolder folder = list.RootFolder; SPFolderCollection folder2 = list.RootFolder.SubFolders; foreach (SPFolder folder3 in list.RootFolder.SubFolders) ...{ if (folder3.Name == "所有图片") ...{ bool ex = false; if (folder.Exists) ...{ try ...{ ex = folder3.Files[filename].Exists; Response.Write("<script language="javascript">alert('已有相同名称的文件存在');</script>"); return; } catch ...{ folder3.Files.Add(filename, fileData, true); ImageUrl = "http://" + sps.HostName + folder3.ServerRelativeUrl + "/" + filename; } } } } Response.Write("<script>window.returnValue='" + ImageUrl + "';window.close();</script>"); } } #endregion //全选 protected void CheckAll(object sender, EventArgs e) ...{ CheckBox cbx = (CheckBox)sender; foreach (GridViewRow gvr in GridView1.Rows) ...{ CheckBox ch = (CheckBox)gvr.FindControl("ItemCheckBox"); ch.Checked = cbx.Checked; } } /**//// <summary> /// 将图片库中的图片插入到文本中 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnOutPut_Click(object sender, EventArgs e) ...{ SPSite sps = yesinda.yesindakms.sharepoint.List.ListLib.findParamSite("/dept/gsb/", this.Context); sps.AllowUnsafeUpdates = true; SPWeb spw = sps.OpenWeb(); spw.AllowUnsafeUpdates = true; SPList list = spw.Lists["图片"]; string ReturnString = String.Empty; foreach (GridViewRow gvr in this.GridView1.Rows) ...{ CheckBox ch = (CheckBox)gvr.FindControl("ItemCheckBox"); if (ch.Checked) ...{ SPListItem listcon = list.Items.GetItemById(Convert.ToInt32(GridView1.DataKeys[gvr.RowIndex].Value.ToString())); ReturnString += sps.Url + "/" + listcon.Url; } } Response.Write("<script>window.returnValue='" + ReturnString + "';window.close();</script>"); } protected void radbtnUpload_SelectedIndexChanged(object sender, EventArgs e) ...{ if (this.radbtnUpload.SelectedIndex == 0) ...{ this.Panel1.Visible = true; this.Panel2.Visible = false; } else ...{ this.Panel1.Visible = false; this.Panel2.Visible = true; } } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) ...{ e.Row.Cells[4].Attributes.Add("style", "display:none"); e.Row.Cells[3].Attributes.Add("style", "display:none"); //滑过GridView控件显示不同颜色 if (e.Row.RowType == DataControlRowType.DataRow) ...{ //<a href="http://www.baidu.com" οnmοuseοver="this.T_SHADOWWIDTH=4;this.T_TEMP=3000;this.T_STICKY=1;this.T_OFFSETX=-20;return escape('图片提示 <img src='test.jpg' width='60'> ')"> 显示图片提示</a> //e.Row.Attributes.Add("onmouseover", "this.T_SHADOWWIDTH=4;this.T_TEMP=3000;this.T_STICKY=1;this.T_OFFSETX=-20;return escape('图片提示 <img src='test.jpg' width='60'> ')"); //e.Row.Attributes.Add("onmouseover", "this.T_SHADOWWIDTH=4;this.T_TEMP=3000;this.T_STICKY=1;this.T_OFFSETX=-20;return escape('图片提示 <img src='test.jpg' width='60'> ')"); e.Row.Attributes.Add("onmouseover", "takePostion(this,'d');c=this.style.backgroundColor;this.style.backgroundColor='#f0ffff';javascript:document.getElementById('showmaximg').src='" + e.Row.Cells[4].Text + "'"); e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c;hidden(this,'d');"); } this.lblCurrentPage.Text = string.Format("当前第{0}页/总共{1}页", this.GridView1.PageIndex + 1, this.GridView1.PageCount); } protected void lnkbtnFrist_Click(object sender, EventArgs e) ...{ //显示首页 this.GridView1.PageIndex = 0; BindGrid(); } protected void lnkbtnPre_Click(object sender, EventArgs e) ...{ //显示上一页 if (this.GridView1.PageIndex > 0) ...{ this.GridView1.PageIndex = this.GridView1.PageIndex - 1; BindGrid(); } } protected void lnkbtnNext_Click(object sender, EventArgs e) ...{ //显示下一页 if (this.GridView1.PageIndex < this.GridView1.PageCount) ...{ this.GridView1.PageIndex = this.GridView1.PageIndex + 1; BindGrid(); } } protected void lnkbtnLast_Click(object sender, EventArgs e) ...{ //显示最后一页 this.GridView1.PageIndex = this.GridView1.PageCount; BindGrid(); } protected void ddlName_SelectedIndexChanged(object sender, EventArgs e) ...{ //选择指定页显示 this.GridView1.PageIndex = this.ddlCurrentPage.SelectedIndex; BindGrid(); } protected void lnkSelect_Command(object sender, CommandEventArgs e) ...{ LinkButton lb = (LinkButton)sender; DataControlFieldCell dcf = (DataControlFieldCell)lb.Parent; GridViewRow gvr = (GridViewRow)dcf.Parent; GridView1.SelectedIndex = gvr.RowIndex; Response.Write("<script>window.returnValue='" + gvr.Cells[3].Text + "';window.close();</script>"); }}