您的位置:首页 > 其它

Dev系列控件综合实例(分层的提出,异步上传文件)

2012-08-25 23:07 597 查看


在我的其他随笔中,已经介绍了Dev系列控件的相关数据展示,操作等等。这里主要介绍在数据操作中结合ajax、dev控件、分层进行数据操作,包括对二进制数组文件的上传。


分层的提出

在B/S下进行数据维护,主要包括数据的检索、更新维护。在进行数据更新的时候我们需要结合数据库结构对数据进行校验,这里我使用js结合ajax来调用webservice实现数据校验,校验完毕后,进入数据逻辑层进行相关数据操作。(关于三层架构以及多层架构的文章很多,这里不累赘,只说明结合使用dev控件结合js来进行数据展示层和校验层的操作)




异步实现二进制文件的上传

我们在实现文件上传到数据库的时候,都需要通过相关的上传控件进行,一般的上传控件我们需要在后台进行数据转换成二进制数组。由于上传控件是使用js上传,所以很难通过异步来实现上传(当然优秀的Jquery和定制的可以)。这里通过dev控件中的Uploadcontrol捕捉到uploadcomplete事件,直接得到二进制数组,并将其存入session(由于比较大,在上传入数据库后,我们最好将session清空)

aspx:
<dxuc:ASPxUploadControl ID="devUploadCode" runat="server"
ClientInstanceName="devUploadCode"
OnFileUploadComplete="devUploadCode_FileUploadComplete"
ShowProgressPanel="True" ShowUploadButton="True">
<UploadButton Text="上传">
</UploadButton>
<ClientSideEvents FileUploadComplete="function(s, e) { onCodeCompleted(s,e); }" />
</dxuc:ASPxUploadControl>


CS:
protected void devUploadWord_FileUploadComplete(object sender, FileUploadCompleteEventArgs e)
{
Session["WordFile"] = (sender as ASPxUploadControl).UploadedFiles[0].FileBytes;
}


下面是详细的代码:

1、展示层

aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ImportSource.aspx.cs" Inherits="content_ImportSource"  EnableEventValidation="false"%>

<%@ Register Assembly="DevExpress.Web.v9.2, Version=9.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxHiddenField" TagPrefix="dxhf" %>

<%@ Register Assembly="DevExpress.Web.ASPxTreeList.v9.2, Version=9.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxTreeList" TagPrefix="dxwtl" %>

<%@ Register Assembly="DevExpress.Web.v9.2, Version=9.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxUploadControl" TagPrefix="dxuc" %>

<%@ Register Assembly="DevExpress.Web.v9.2, Version=9.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxPanel" TagPrefix="dxp" %>

<%@ Register Assembly="DevExpress.Web.v9.2, Version=9.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxCallbackPanel" TagPrefix="dxcp" %>

<%@ Register Assembly="DevExpress.Web.v9.2, Version=9.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxClasses" TagPrefix="dxw" %>

<%@ Register Assembly="DevExpress.Web.v9.2, Version=9.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxTabControl" TagPrefix="dxtc" %>

<%@ Register Assembly="DevExpress.Web.ASPxGridView.v9.2, Version=9.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dxwgv" %>

<%@ Register Assembly="DevExpress.Web.ASPxEditors.v9.2, Version=9.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dxe" %>
<%@ Register Assembly="DevExpress.Web.v9.2, Version=9.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxPopupControl" TagPrefix="dxpc" %>
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>无标题页</title>
<link rel="stylesheet" href="../Css/main.css" type="text/css" />
<link rel="stylesheet" href="../css/common.css" type="text/css" />

</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True">
<Scripts>
<asp:ScriptReference Path="../js/ImportSource.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="ImportSourceService.asmx" />
</Services>
</asp:ScriptManager>
<table width="97%" border="0" cellspacing="0" cellpadding="0" style="margin-top:2px; margin-left:2px;">
<tr>
<td>
<dxpc:ASPxPopupControl ID="devpopupcProject" runat="server" Width="300px" Height="100px"
AllowDragging="False" AllowResize="True" EnableAnimation="False"
EnableHierarchyRecreation="True" EnableHotTrack="False" HeaderText="工程分类" PopupHorizontalAlign="OutsideLeft"
ShowFooter="False" ClientInstanceName="devpopupcProject" >
<ContentCollection>
<dxpc:PopupControlContentControl runat="server">
<dxcp:ASPxCallbackPanel ID="devcbpnlProInfo" runat="server" Width="300px" Height="100px"
OnCallback="devcbpnlProInfo_Callback" ClientInstanceName="pnlProject" LoadingPanelText="加载中..." >
<PanelCollection>
<dxp:PanelContent runat="server">
<asp:Label ID="lblProInfo" runat="server" Width="300px" Height="100px"></asp:Label>
</dxp:PanelContent>
</PanelCollection>
</dxcp:ASPxCallbackPanel>
</dxpc:PopupControlContentControl>
</ContentCollection>
</dxpc:ASPxPopupControl>
<dxpc:ASPxPopupControl ID="devpopupModel" runat="server" Width="300px" Height="100px"
AllowDragging="False" AllowResize="True" EnableAnimation="False"
EnableHierarchyRecreation="True" EnableHotTrack="False" HeaderText="模型分类" PopupHorizontalAlign="OutsideLeft"
ShowFooter="False" ClientInstanceName="devpopupModel" >
<ContentCollection>
<dxpc:PopupControlContentControl ID="PopupControlContentControl1" runat="server">
<dxcp:ASPxCallbackPanel ID="devcbpnlModel" runat="server" Width="300px" Height="100px"
OnCallback="devcbpnlModel_Callback" ClientInstanceName="devcbpnlModel" LoadingPanelText="加载中..." >
<PanelCollection>
<dxp:PanelContent ID="PanelContent1" runat="server">
<asp:Label ID="lblModel" runat="server" Width="300px" Height="100px"></asp:Label>
</dxp:PanelContent>
</PanelCollection>
</dxcp:ASPxCallbackPanel>
</dxpc:PopupControlContentControl>
</ContentCollection>
</dxpc:ASPxPopupControl>
<dxpc:ASPxPopupControl ID="devpopupBook" runat="server" Width="300px" Height="100px"
AllowDragging="False" AllowResize="True" EnableAnimation="False"
EnableHierarchyRecreation="True" EnableHotTrack="False" HeaderText="相关文献" PopupHorizontalAlign="OutsideLeft"
ShowFooter="False" ClientInstanceName="devpopupBook" >
<ContentCollection>
<dxpc:PopupControlContentControl ID="PopupControlContentControl2" runat="server">
<dxcp:ASPxCallbackPanel ID="devcbpnlBook" runat="server" Width="300px" Height="100px"
OnCallback="devcbpnlBook_Callback" ClientInstanceName="devcbpnlBook" LoadingPanelText="加载中..." >
<PanelCollection>
<dxp:PanelContent ID="PanelContent2" runat="server">
<asp:Label ID="lblBook" runat="server" Width="300px" Height="100px"></asp:Label>
</dxp:PanelContent>
</PanelCollection>
</dxcp:ASPxCallbackPanel>
</dxpc:PopupControlContentControl>
</ContentCollection>
</dxpc:ASPxPopupControl>
<dxpc:ASPxPopupControl ID="devpopupKeyWord" runat="server" Width="300px" Height="100px"
AllowDragging="False" AllowResize="True" EnableAnimation="False"
EnableHierarchyRecreation="True" EnableHotTrack="False" HeaderText="关键字" PopupHorizontalAlign="OutsideLeft"
ShowFooter="False" ClientInstanceName="devpopupKeyWord" >
<ContentCollection>
<dxpc:PopupControlContentControl ID="PopupControlContentControl3" runat="server">
<dxcp:ASPxCallbackPanel ID="devcbpnlKeyWord" runat="server" Width="300px" Height="100px"
OnCallback="devcbpnlKeyWord_Callback" ClientInstanceName="devcbpnlKeyWord" LoadingPanelText="加载中..." >
<PanelCollection>
<dxp:PanelContent ID="PanelContent3" runat="server">
<asp:Label ID="lblKeyWord" runat="server" Width="300px" Height="100px"></asp:Label>
</dxp:PanelContent>
</PanelCollection>
</dxcp:ASPxCallbackPanel>
</dxpc:PopupControlContentControl>
</ContentCollection>
</dxpc:ASPxPopupControl>
<dxpc:ASPxPopupControl ID="devpopupFunction" runat="server" Width="300px" Height="100px"
AllowDragging="False" AllowResize="True" EnableAnimation="False"
EnableHierarchyRecreation="True" EnableHotTrack="False" HeaderText="功能简述" PopupHorizontalAlign="OutsideLeft"
ShowFooter="False" ClientInstanceName="devpopupFunction" >
<ContentCollection>
<dxpc:PopupControlContentControl ID="PopupControlContentControl7" runat="server">
<dxcp:ASPxCallbackPanel ID="devcbpnlFunction" runat="server" Width="300px" Height="100px"
OnCallback="devcbpnlFunction_Callback" ClientInstanceName="devcbpnlFunction" LoadingPanelText="加载中..." >
<PanelCollection>
<dxp:PanelContent ID="PanelContent4" runat="server">
<asp:Label ID="lblFunction" runat="server" Width="300px" Height="100px"></asp:Label>
</dxp:PanelContent>
</PanelCollection>
</dxcp:ASPxCallbackPanel>
</dxpc:PopupControlContentControl>
</ContentCollection>
</dxpc:ASPxPopupControl>

<dxpc:ASPxPopupControl ID="ASPxPopupControl1" runat="server" Width="300px" Height="400px"
AllowDragging="True" AllowResize="True" EnableAnimation="False"
CloseAction="CloseButton" Modal="true"
EnableHierarchyRecreation="True" EnableHotTrack="False" HeaderText="工程分类" PopupHorizontalAlign="RightSides"
ShowFooter="True" ClientInstanceName="devpopupAllProjcet" >
<ContentCollection>
<dxpc:PopupControlContentControl ID="PopupControlContentControl5" runat="server">
<asp:Panel ID="Panel1" runat="server" Width="98%" Height="98%" ScrollBars="Auto">
<dxwtl:ASPxTreeList ID="trlProjcet" runat="server" KeyFieldName="projectid"

ParentFieldName="ParID"
AutoGenerateColumns="False" ClientInstanceName="trlProjcet"
OnCustomCallback="trlProjcet_CustomCallback">
<Columns>
<dxwtl:TreeListTextColumn VisibleIndex="0"

FieldName="projectname"></dxwtl:TreeListTextColumn>
<dxwtl:TreeListTextColumn Visible="False" VisibleIndex="1"

FieldName="projectid"></dxwtl:TreeListTextColumn>
</Columns>
<Settings ShowColumnHeaders="False" />
<SettingsBehavior AllowFocusedNode="True" FocusNodeOnLoad="False"

FocusNodeOnExpandButtonClick="False" />
<SettingsSelection Enabled="True" />

</dxwtl:ASPxTreeList>

</asp:Panel>
</dxpc:PopupControlContentControl>
</ContentCollection>
<FooterTemplate>
<input id="btnSaveProject" type="button" value="选择工程分类" onclick="btnSaveProject_Click()" />
</FooterTemplate>
</dxpc:ASPxPopupControl>

<dxwgv:ASPxGridView ID="devgvwData" runat="server"
OnRowDeleting="devgvwData_RowDeleting" OnRowInserting="devgvwData_RowInserting"
OnRowUpdating="devgvwData_RowUpdating"
OnStartRowEditing="devgvwData_StartRowEditing" AutoGenerateColumns="False"
KeyFieldName="sourceid" OnInitNewRow="devgvwData_InitNewRow"
OnCustomCallback="devgvwData_CustomCallback"
OnCustomButtonCallback="devgvwData_CustomButtonCallback"
OnHtmlEditFormCreated="devgvwData_HtmlEditFormCreated"
ClientInstanceName="grid" Cursor="default"
oncustomjsproperties="devgvwData_CustomJSProperties">
<Styles>
<Header HorizontalAlign="Center" Wrap="False"></Header>

<Row Wrap="False"></Row>

<FocusedRow BackColor="#3B97D3"></FocusedRow>
</Styles>

<Columns>
<dxwgv:GridViewCommandColumn ButtonType="Image" Caption="操作" VisibleIndex="0"
Width="80px">
<EditButton Text="编辑" Visible="True">
<Image Url="~/images/Update_hui.png" />
</EditButton>
<NewButton Text="增加" Visible="True">
<Image Url="~/images/Add_hui.png" />
</NewButton>
<DeleteButton Text="删除" Visible="True">
<Image Url="~/images/Del_hui.png" />
</DeleteButton>
<CancelButton Text="取消">
<Image Url="~/images/quxiao.jpg" />
</CancelButton>
<UpdateButton Text="更新">
<Image Url="~/images/gengxin.jpg" />
</UpdateButton>
<CustomButtons>
<dxwgv:GridViewCommandColumnCustomButton ID="Copy" Text="克隆">
<Image Url="~/images/Save_hui.png" />
</dxwgv:GridViewCommandColumnCustomButton>
</CustomButtons>
<CellStyle Wrap="False" Cursor="pointer" ForeColor="Black">
</CellStyle>
</dxwgv:GridViewCommandColumn>
<dxwgv:GridViewDataColumn Caption="资源ID" FieldName="sourceid" VisibleIndex="1"
Width="80px">
<HeaderStyle HorizontalAlign="Center" />
<CellStyle HorizontalAlign="Left" ForeColor="Black">
</CellStyle>
</dxwgv:GridViewDataColumn>
<dxwgv:GridViewDataTextColumn Caption="资源名称" FieldName="sourcename"
VisibleIndex="2" Width="200px">
<HeaderStyle HorizontalAlign="Center" />
<CellStyle HorizontalAlign="Left" ForeColor="Black">
</CellStyle>
</dxwgv:GridViewDataTextColumn>

<dxwgv:GridViewDataTextColumn Caption="建模人" FieldName="modelperson" VisibleIndex="3"
Width="60px">
<HeaderStyle HorizontalAlign="Center" />
<CellStyle HorizontalAlign="Center">
</CellStyle>
</dxwgv:GridViewDataTextColumn>

<dxwgv:GridViewDataTextColumn Caption="审核人" FieldName="checkperson" VisibleIndex="4"
Width="60px">
<HeaderStyle HorizontalAlign="Center" />
<CellStyle HorizontalAlign="Center">
</CellStyle>
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataTextColumn Caption="发放时间" FieldName="releasetime" VisibleIndex="5"
Width="80px">
<HeaderStyle HorizontalAlign="Center" />
<CellStyle HorizontalAlign="Center">
</CellStyle>
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataTextColumn Caption="完成时间" FieldName="completetime" VisibleIndex="6"
Width="80px">
</dxwgv:GridViewDataTextColumn>

<dxwgv:GridViewDataTextColumn Caption="关键字"
VisibleIndex="7" Width="60px">
<DataItemTemplate>
<a href="javascript:void(0);" onclick="onKeyWordCategory(this, '<%# Eval("sourceid") %>')"
>关键字</a>
</DataItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
<CellStyle ForeColor="Black" HorizontalAlign="Center" Wrap="False"
Cursor="pointer">
</CellStyle>
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataTextColumn Caption="工程分类"
VisibleIndex="8" Width="60px">
<DataItemTemplate>
<a href="javascript:void(0);" onclick="onProjectCategory(this, '<%# Eval("sourceid") %>')"
>工程分类</a>
</DataItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
<CellStyle ForeColor="Black" HorizontalAlign="Center" Wrap="False">
</CellStyle>
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataColumn Caption="模型分类" VisibleIndex="9"
Width="60px">
<DataItemTemplate>
<a href="javascript:void(0);" onclick="onModelCategory(this, '<%# Eval("sourceid") %>')"
>模型分类</a>
</DataItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
<CellStyle HorizontalAlign="Center">
</CellStyle>
</dxwgv:GridViewDataColumn>
<dxwgv:GridViewDataColumn Caption="相关文献" VisibleIndex="10"
Width="60px">
<DataItemTemplate>
<a href="javascript:void(0);" onclick="OnFromCategory(this, '<%# Eval("sourceid") %>')"
>相关文献</a>
</DataItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
<CellStyle HorizontalAlign="Center">
</CellStyle>
</dxwgv:GridViewDataColumn>
<dxwgv:GridViewDataColumn Caption="功能概述" VisibleIndex="11">
<DataItemTemplate>
<a href="javascript:void(0);" onclick="OnFunctionCategory(this, '<%# Eval("sourceid") %>')"
>功能概述</a>
</DataItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
<CellStyle HorizontalAlign="Left">
</CellStyle>
</dxwgv:GridViewDataColumn>

</Columns>

<Templates><EditForm>

<div style="padding:10px 4px 10px 4px;">

<table style="font-size:12px; border-collapse:collapse; border-style:solid; border:solid 1px #D7D7D7;" id="Table1" border="0" cellpadding="0" cellspacing="0" width="98%" align="center" >
<tr>
<td valign="top" style="height: 32px" class="TdBj">
  <asp:Label ID="Label2" runat="server" Text="资源ID:" Width="88px"></asp:Label>
</td>
<td valign="top" style="height: 32px" class="TdBj" >
<asp:TextBox ID="txtSourceID" runat="server" Text='<%# Eval("sourceid") %>' MaxLength="14"></asp:TextBox>
</td>
<td valign="top" style="height: 32px" class="TdBj">
  <asp:Label ID="Label3" runat="server" Text="资源名称:" Width="78px"></asp:Label>
</td>
<td valign="top" style="height: 32px" class="TdBj" >
<asp:TextBox ID="txtSourceName" runat="server" Text='<%# Eval("sourcename") %>' MaxLength="100" Width="250px"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="4" class="TDLine"></td>
</tr>

<tr valign="top" >
<td style="height: 31px" class="TdBj">
  <asp:Label ID="Label4" runat="server" Text="建模人:"></asp:Label>
</td>
<td style="height: 31px" class="TdBj" >
<asp:TextBox ID="txtModelPerson" runat="server" Text='<%# Eval("modelperson") %>' MaxLength="25"></asp:TextBox>
</td>
<td style="height: 31px" class="TdBj">
  <asp:Label ID="Label5" runat="server" Text="审核人:"></asp:Label>
</td>
<td style="height: 31px" class="TdBj" >
<asp:TextBox ID="txtCheckPerson" runat="server" Text='<%# Eval("checkperson") %>' MaxLength="25"></asp:TextBox>
</td> </tr>
<tr>
<td colspan="4" class="TDLine"></td>
</tr>

<tr >
<td style="height: 32px" class="TdBj" >
  <asp:Label ID="Label6" runat="server" Text="下放时间:"></asp:Label>
</td>
<td style="height: 32px" class="TdBj">
<dxe:ASPxDateEdit ID="devDateRelease" runat="server"
Text='<%# Eval("releasetime")%>'>
<CalendarProperties ClearButtonText="清空" TodayButtonText="今天" />
</dxe:ASPxDateEdit> </td>
<td style="height: 31px" class="TdBj" >
  <asp:Label ID="Label10" runat="server" Text="完成时间:"></asp:Label>
</td>
<td style="height: 31px" class="TdBj">
<dxe:ASPxDateEdit ID="devDataComplete" runat="server" Text='<%# Eval("completetime")%>'>
<CalendarProperties ClearButtonText="清空" TodayButtonText="今天" />
</dxe:ASPxDateEdit>
</td>

</tr>
<tr>
<td colspan="4" class="TDLine"></td>
</tr>
<tr >
<td style="height: 32px" class="TdBj" >
  <asp:Label ID="Label9" runat="server" Text="关键字:"></asp:Label>
</td>
<td style="height: 32px" class="TdBj">
<asp:TextBox ID="txtKeyWord" runat="server" Text='<%# Eval("keyword") %>' MaxLength="100"
Width="250px" onblur="onKeyWordBlur()"></asp:TextBox> </td>
<td style="height: 31px" class="TdBj" >
  <asp:Label ID="Label12" runat="server" Text="模型分类:"></asp:Label>
</td>
<td style="height: 31px" class="TdBj">
<asp:TextBox ID="txtModel" runat="server" Text='<%# Eval("modelname") %>' MaxLength="50" Width="250px"></asp:TextBox>
</td>

</tr>
<tr>
<td colspan="4" class="TDLine"></td>
</tr>
<tr >
<td style="height: 31px" class="TdBj" >
  <asp:Label ID="Label14" runat="server" Text="工程分类:"></asp:Label>
</td>
<td style="height: 31px" class="TdBj" colspan="3">
<dxe:ASPxComboBox ID="ASPxComboBox1" runat="server"
ClientInstanceName="txtProjectID"
oncallback="ASPxComboBox1_Callback" ClientVisible="False" >
</dxe:ASPxComboBox>
<asp:TextBox ID="txtProject" Text='<%# Eval("projectname") %>' runat="server" ReadOnly="true"></asp:TextBox>
<input id="btnSelectProjcet" type="button" value="选择工程分类" onclick="btnSelectProjcet_Click(this)" />
</td>
</tr>
<tr>
<td colspan="4" class="TDLine"></td>
</tr>

<tr >
<td style="height: 31px" class="TdBj" >
  <asp:Label ID="Label16" runat="server" Text="相关文献:"></asp:Label>
</td>
<td style="height: 31px" class="TdBj" colspan="3">
<asp:TextBox ID="txtBook" runat="server" Text='<%# Eval("bookname") %>' MaxLength="200" Width="611px"></asp:TextBox>
</td>

</tr>
<tr>
<td colspan="4" class="TDLine"></td>
</tr>

<tr valign="top" >
<td style="height: 31px" class="TdBj" >
  <asp:Label ID="lblCreateTime" runat="server" Text="功能简述:"></asp:Label>
</td>
<td style="height: 31px" class="TdBj" colspan="3">
<asp:TextBox ID="txtFunInfo" runat="server" Text='<%# Eval("funInfo") %>' Width="611px"></asp:TextBox>
</td>

</tr>
<tr>
<td colspan="4" class="TDLine"></td>
</tr>

<tr valign="top">
<td class="TdBj">
  <asp:Label ID="Label1" runat="server" Text="上传文档:"></asp:Label>
</td>
<td style="height: 31px" class="TdBj">
<dxuc:ASPxUploadControl ID="devUploadWord" runat="server"
ClientInstanceName="devUploadWord"
OnFileUploadComplete="devUploadWord_FileUploadComplete"
ShowProgressPanel="True" ShowUploadButton="True">
<UploadButton Text="上传">
</UploadButton>
<ClientSideEvents FileUploadComplete="function(s, e) { onWordCompleted(s,e); }" />
</dxuc:ASPxUploadControl>
<dxe:ASPxLabel ID="ASPxLabel1" runat="server"
ClientInstanceName="lblWordSuccess" ClientVisible="False" Text="上传成功"
Font-Bold="True" ForeColor="Red">
</dxe:ASPxLabel>
</td>
<td class="TdBj">
  <asp:Label ID="Label11" runat="server" Text="上传DLL:"></asp:Label>
</td>
<td style="height: 31px" class="TdBj">
<dxuc:ASPxUploadControl ID="devUploadDll" runat="server"
ClientInstanceName="devUploadDll"
OnFileUploadComplete="devUploadDll_FileUploadComplete"
ShowProgressPanel="True" ShowUploadButton="True">
<UploadButton Text="上传">
</UploadButton>
<ClientSideEvents FileUploadComplete="function(s, e) { onDllCompleted(s,e); }" />
</dxuc:ASPxUploadControl>
<dxe:ASPxLabel ID="ASPxLabel2" runat="server"
ClientInstanceName="lblDllSuccess" ClientVisible="False" Text="上传成功"
Font-Bold="True" ForeColor="Red">
</dxe:ASPxLabel>
</td>

</tr>
<tr>
<td colspan="4" class="TDLine"></td>
</tr>
<tr valign="top">
<td class="TdBj">
  <asp:Label ID="Label7" runat="server" Text="上传代码:"></asp:Label>
</td>
<td style="height: 31px" class="TdBj" colspan="3">
<dxuc:ASPxUploadControl ID="devUploadCode" runat="server" ClientInstanceName="devUploadCode" OnFileUploadComplete="devUploadCode_FileUploadComplete" ShowProgressPanel="True" ShowUploadButton="True"> <UploadButton Text="上传"> </UploadButton> <ClientSideEvents FileUploadComplete="function(s, e) { onCodeCompleted(s,e); }" /> </dxuc:ASPxUploadControl>
<dxe:ASPxLabel ID="ASPxLabel3" runat="server"
ClientInstanceName="lblCodeSuccess" ClientVisible="False" Text="上传成功"
Font-Bold="True" ForeColor="Red">
</dxe:ASPxLabel>
</td>

</tr>

<tr id="tr1" visible="False" runat="server">
<td id="Td2" class="err_meaages_css" colspan="2" runat="server"><asp:Label ID="Label8" Visible="False" runat="server" Font-Size="12px" Font-Bold="True"></asp:Label></td>
</tr>
</table>
</div>

<div style="text-align:center; padding:2px 2px 2px 2px">
<img alt="更新" src="../images/gengxin.jpg" onclick="return btnUpdate_onclick()" />
<dxwgv:ASPxGridViewTemplateReplacement ID="CancelButton" ReplacementType="EditFormCancelButton" runat="server"></dxwgv:ASPxGridViewTemplateReplacement>
</div>

</EditForm>
</Templates>

<SettingsBehavior ConfirmDelete="True" />

<SettingsText PopupEditFormCaption="编辑资源" CommandUpdate="更新" CommandCancel="取消"
ConfirmDelete="确认要删除当前资源么?" EmptyDataRow="无数据"/>

<SettingsEditing PopupEditFormHorizontalAlign="WindowCenter" PopupEditFormVerticalAlign="WindowCenter" Mode="PopupEditForm" PopupEditFormModal="True" PopupEditFormWidth="800px" PopupEditFormAllowResize="True"/>
<SettingsPager AlwaysShowPager="True">
<FirstPageButton Text="首页">
</FirstPageButton>
<LastPageButton Text="尾页">
</LastPageButton>
<NextPageButton Text="下一页">
</NextPageButton>
<PrevPageButton Text="上一页">
</PrevPageButton>
<Summary Text="当前第{0}页 共{1}页 {2}项" />
</SettingsPager>
<Settings ShowHorizontalScrollBar="True" ShowVerticalScrollBar="True"/>
</dxwgv:ASPxGridView>
</td>
</tr>
<tr>
<td style="background-image:url(../Images/main_center_left.jpg); background-repeat:repeat-y;"
class="style2">
 </td>
</tr>

</table>
</form>
</body>
</html>


CS:
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 System.Text;
using System.Data.SqlClient;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxUploadControl;
using DevExpress.Web.ASPxGridView;
using DevExpress.Web.ASPxCallbackPanel;

/*******************************************************************************************************
** 编码人:***
** 编码时间:2010年2月22日
** 编码内容简介:资源管理
** 说明:Session["DTAllSource"]——所有资源 Session["CodeFile"]——上传代码文件 Session["WordFile"]——上传word文件
*Session["DllFile"]——上传Dll文件 Session["SourceID"]——资源ID Session["State"]——当前状态
*Session["ProjcetData"]——工程分类 Session["RefreshProjectID"]——修改完的工程分类ID
*未处理模型分类,所属文献
* ******************************************************************************************************/
public partial class content_ImportSource : System.Web.UI.Page
{
Hashtable HashCopySource = null;
string[] DataSourceFields = new string[] { "sourceid", "sourcename", "releasetime", "completetime", "modelperson", "checkperson", "funInfo" };

protected void Page_Load(object sender, EventArgs e)
{
if (Session["IsLogin"] == null || !(bool)Session["IsLogin"])
{
Response.Redirect("../index.aspx");
return;
}
if (!IsPostBack)
{
if (System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width == 1440)
{
devgvwData.Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - 254;
devgvwData.Settings.VerticalScrollableHeight = System.Windows.Forms.Screen. PrimaryScreen.Bounds.Height - 433;
}
if (System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width == 1024)
{
devgvwData.Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - 279;
devgvwData.Settings.VerticalScrollableHeight = System.Windows.Forms. Screen.PrimaryScreen.Bounds.Height - 450;
}
Session["DTAllSource"] = DataBindings.MergeAllSource(DataBindings.GetAllSource());

}
BindTable((DataTable)Session["DTAllSource"]);
if (Request.Form["__CALLBACKID"] != null && Request.Form["__CALLBACKID"].Contains("trlProjcet"))
{
trlProjcet.DataSource = Session["ProjcetData"] as DataTable;
}

}

/// <summary>
/// 列表绑定数据
/// </summary>
/// <param name="DT"></param>
void BindTable(DataTable DT)
{
devgvwData.DataSource = DT;

devgvwData.DataBind();
}

protected void devgvwData_CustomButtonCallback(object sender, ASPxGridViewCustomButtonCallbackEventArgs e)
{
if (e.ButtonID == "Copy")
{
HashCopySource = new Hashtable();
foreach (string strField in DataSourceFields)
{
HashCopySource[strField] = devgvwData.GetRowValues(e.VisibleIndex, strField);
}
devgvwData.AddNewRow();
}
}
protected void devgvwData_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e)
{

}
protected void devgvwData_HtmlEditFormCreated(object sender, ASPxGridViewEditFormEventArgs e)
{
}
protected void devgvwData_InitNewRow(object sender, DevExpress.Web.Data.ASPxDataInitNewRowEventArgs e)
{
devgvwData.SettingsText.PopupEditFormCaption = "添加资源";
devgvwData.JSProperties["cp_key"] = "";//清空键值
Session["CopyKey"] = null;

if (HashCopySource != null)
{
foreach (string strField in DataSourceFields)
{
e.NewValues[strField] = HashCopySource[strField];
if (strField == "sourceid")
{
Session["CopyKey"] = HashCopySource[strField].ToString().Trim();
}
}
}
else
{
TextBox txtModelPerson = (TextBox)devgvwData.FindEditFormTemplateControl("txtModelPerson");
TextBox txtCheckPerson = (TextBox)devgvwData.FindEditFormTemplateControl("txtCheckPerson");
ASPxDateEdit devDateRelease = (ASPxDateEdit)devgvwData.FindEditFormTemplateControl("devDateRelease");
ASPxDateEdit devDataComplete = (ASPxDateEdit)devgvwData.FindEditFormTemplateControl("devDataComplete");
txtCheckPerson.Text = Session["yhmc"].ToString();
txtModelPerson.Text = Session["yhmc"].ToString();
devDateRelease.Date = DateTime.Now;
devDataComplete.Date = DateTime.Now;
}
}

protected void devgvwData_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
DataBindings.DeleteSource(e.Keys[0].ToString().Trim());

Session["DTAllSource"] = DataBindings.MergeAllSource(DataBindings.GetAllSource());
BindTable((DataTable)Session["DTAllSource"]);

devgvwData.CancelEdit();
e.Cancel = true;
}
protected void devgvwData_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
TextBox txtSourceID = (TextBox)devgvwData.FindEditFormTemplateControl("txtSourceID");
TextBox txtSourceName = (TextBox)devgvwData.FindEditFormTemplateControl("txtSourceName");
TextBox txtModelPerson = (TextBox)devgvwData.FindEditFormTemplateControl("txtModelPerson");
TextBox txtCheckPerson = (TextBox)devgvwData.FindEditFormTemplateControl("txtCheckPerson");
ASPxDateEdit devDateRelease = (ASPxDateEdit)devgvwData.FindEditFormTemplateControl("devDateRelease");
ASPxDateEdit devDataComplete = (ASPxDateEdit)devgvwData.FindEditFormTemplateControl("devDataComplete");
TextBox txtFunInfo = (TextBox)devgvwData.FindEditFormTemplateControl("txtFunInfo");
TextBox txtKeyWord = (TextBox)devgvwData.FindEditFormTemplateControl("txtKeyWord");

byte[] Word = null;
byte[] Dll = null;
byte[] Code = null;
if (Session["WordFile"] != null) Word = Session["WordFile"] as byte[];
if (Session["DllFile"] != null) Dll = Session["DllFile"] as byte[];
if (Session["CodeFile"] != null) Code = Session["CodeFile"] as byte[];

DataBindings.ImportSource(txtSourceID.Text.Trim(), txtSourceName.Text.Trim(), devDateRelease.Value.ToString(),
devDataComplete.Value.ToString(), txtModelPerson.Text.Trim(), txtCheckPerson.Text.Trim(),
txtFunInfo.Text.Trim(), Word, Dll, Code);

DataBindings.UpdateSourceProject(txtSourceID.Text.Trim(), Session["RefreshProjectID"].ToString().Split(new char[] { ',' },
StringSplitOptions.RemoveEmptyEntries));

DataBindings.UpdateSourceKeyWord(txtSourceID.Text.Trim(), txtKeyWord.Text.Split(new char[] { ',' },
StringSplitOptions.RemoveEmptyEntries));

Session["DTAllSource"] = DataBindings.MergeAllSource(DataBindings.GetAllSource());
BindTable((DataTable)Session["DTAllSource"]);

devgvwData.CancelEdit();
e.Cancel = true;

Session["WordFile"] = null;
Session["DllFile"] = null;
Session["CodeFile"] = null;
}
protected void devgvwData_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
TextBox txtSourceID = (TextBox)devgvwData.FindEditFormTemplateControl("txtSourceID");
TextBox txtSourceName = (TextBox)devgvwData.FindEditFormTemplateControl("txtSourceName");
TextBox txtModelPerson = (TextBox)devgvwData.FindEditFormTemplateControl("txtModelPerson");
TextBox txtCheckPerson = (TextBox)devgvwData.FindEditFormTemplateControl("txtCheckPerson");
TextBox txtProject = (TextBox)devgvwData.FindEditFormTemplateControl("txtProject");
ASPxDateEdit devDateRelease = (ASPxDateEdit)devgvwData.FindEditFormTemplateControl("devDateRelease");
ASPxDateEdit devDataComplete = (ASPxDateEdit)devgvwData.FindEditFormTemplateControl("devDataComplete");
TextBox txtFunInfo = (TextBox)devgvwData.FindEditFormTemplateControl("txtFunInfo");
TextBox txtKeyWord = (TextBox)devgvwData.FindEditFormTemplateControl("txtKeyWord");

byte[] Word = null;
byte[] Dll = null;
byte[] Code = null;
if (Session["WordFile"] != null) Word = Session["WordFile"] as byte[];
if (Session["DllFile"] != null) Dll = Session["DllFile"] as byte[];
if (Session["CodeFile"] != null) Code = Session["CodeFile"] as byte[];

DataBindings.UpdateSource(txtSourceID.Text.Trim(), Session["SourceID"].ToString().Trim(),
txtSourceName.Text.Trim(), devDateRelease.Value.ToString(), devDataComplete.Value.ToString()
, txtModelPerson.Text.Trim(), txtCheckPerson.Text.Trim(), txtFunInfo.Text.Trim(), Word, Dll, Code);

if (Session["RefreshProjectID"] != null)
{
DataBindings.UpdateSourceProject(txtSourceID.Text.Trim(), Session["RefreshProjectID"].ToString().
Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
}

DataBindings.UpdateSourceKeyWord(txtSourceID.Text.Trim(), txtKeyWord.Text.Split(new char[] { ',' },
StringSplitOptions.RemoveEmptyEntries));

devgvwData.CancelEdit();
e.Cancel = true;

Session["DTAllSource"] = DataBindings.MergeAllSource(DataBindings.GetAllSource());
BindTable((DataTable)Session["DTAllSource"]);

Session["WordFile"] = null;
Session["DllFile"] = null;
Session["CodeFile"] = null;
}

#region FileUpload
protected void devUploadWord_FileUploadComplete(object sender, FileUploadCompleteEventArgs e) { Session["WordFile"] = (sender as ASPxUploadControl).UploadedFiles[0].FileBytes; }
protected void devUploadDll_FileUploadComplete(object sender, FileUploadCompleteEventArgs e)
{
Session["DllFile"] = (sender as ASPxUploadControl).UploadedFiles[0].FileBytes;
}

protected void devUploadCode_FileUploadComplete(object sender, FileUploadCompleteEventArgs e)
{
Session["CodeFile"] = (sender as ASPxUploadControl).UploadedFiles[0].FileBytes;
}

#endregion

protected void devgvwData_StartRowEditing(object sender, DevExpress.Web.Data.ASPxStartRowEditingEventArgs e)
{
devgvwData.JSProperties["cp_key"] = e.EditingKeyValue.ToString().Trim();//记录键值
Session["SourceID"] = e.EditingKeyValue.ToString().Trim();
Session["RefreshProjectID"] = null;
}

#region 点击出现详细信息
protected void devcbpnlProInfo_Callback(object source, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
GetMoreText("lblProInfo", e.Parameter.Trim(), "projectname", devcbpnlProInfo);
}

protected void devcbpnlModel_Callback(object source, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
GetMoreText("lblModel", e.Parameter.Trim(), "modelname", devcbpnlModel);
}

protected void devcbpnlBook_Callback(object source, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
GetMoreText("lblBook", e.Parameter.Trim(), "bookname", devcbpnlBook);
}

protected void devcbpnlKeyWord_Callback(object source, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
GetMoreText("lblKeyWord", e.Parameter.Trim(), "keyword", devcbpnlKeyWord);
}

protected void devcbpnlFunction_Callback(object source, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
GetMoreText("lblFunction", e.Parameter.Trim(), "funInfo", devcbpnlFunction);
}

/// <summary>
/// 获取更多信息
/// </summary>
/// <param name="name"></param>
/// <param name="keyword"></param>
/// <param name="fieldword"></param>
/// <param name="mypnl"></param>
private void GetMoreText(string name, string keyword, string fieldword, ASPxCallbackPanel mypnl)
{
Label lbl = mypnl.FindControl(name) as Label;
DataTable DTAllSource = (DataTable)Session["DTAllSource"] as DataTable;
DataRow[] DRSelfSource = DTAllSource.Select("sourceid='" + keyword + "'");
if (DRSelfSource.Length == 0) return;
lbl.Text = DRSelfSource[0][fieldword].ToString();
}

#endregion

protected void devgvwData_CustomJSProperties(object sender, ASPxGridViewClientJSPropertiesEventArgs e)
{
devgvwData.JSProperties["cp_index"] = devgvwData.EditingRowVisibleIndex;
}

protected void trlProjcet_CustomCallback(object sender, DevExpress.Web.ASPxTreeList.TreeListCustomCallbackEventArgs e)
{
Session["ProjcetData"] = MergeData(DataBindings.ShowProjcetOrg());
trlProjcet.DataSource = Session["ProjcetData"] as DataTable;
trlProjcet.DataBind();
}

/// <summary>
/// 合并生成treelist的工程分类数据集
/// </summary>
/// <param name="DTOld"></param>
/// <returns></returns>
private DataTable MergeData(DataTable DTOld)
{
DataTable DTNew = new DataTable();
DTNew.Columns.Add(new DataColumn("ParID", typeof(string)));
DTNew.Columns.Add(new DataColumn("projectid", typeof(string)));
DTNew.Columns.Add(new DataColumn("projectname", typeof(string)));

for (int i = 0; i < DTOld.Rows.Count; i++)
{
DataRow DR = DTNew.NewRow();
DR["projectid"] = DTOld.Rows[i]["projectid"].ToString().Trim();
DR["projectname"] = DTOld.Rows[i]["projectname"].ToString().Trim();

if (DTOld.Rows[i]["projectid"].ToString().Trim().Length == 2)
{
DR["ParID"] = "0";
}
else
{
DR["ParID"] = DTOld.Rows[i]["projectid"].ToString().Trim().Substring(0, DTOld.Rows[i]["projectid"].
ToString().Trim().Length - 2);
}
DTNew.Rows.Add(DR);
}
DTNew.AcceptChanges();
return DTNew;
}
protected void ASPxComboBox1_Callback(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
Session["RefreshProjectID"] = e.Parameter.Trim();
}
}


运行效果:

数据展示



数据维护:



2.js数据校验层:
//ImoprtSourcePage
var txtSourceID, txtSourceName, txtProject, txtKeyWord;

function onProjectCategory(element, keyValue) {
OnCloseAllPopPnl();
devpopupcProject.ShowAtElement(element);
pnlProject.PerformCallback(keyValue);
}

function onKeyWordCategory(element, keyValue) {
OnCloseAllPopPnl();
devpopupKeyWord.ShowAtElement(element);
devcbpnlKeyWord.PerformCallback(keyValue);
}

function onModelCategory(element, keyValue) {
OnCloseAllPopPnl();
devpopupModel.ShowAtElement(element);
devcbpnlModel.PerformCallback(keyValue);
}

function OnFromCategory(element, keyValue) {
OnCloseAllPopPnl();
devpopupBook.ShowAtElement(element);
devcbpnlBook.PerformCallback(keyValue);
}

function OnFunctionCategory(element, keyValue) {
OnCloseAllPopPnl();
devpopupFunction.ShowAtElement(element);
devcbpnlFunction.PerformCallback(keyValue);
}

function OnCloseAllPopPnl() {
devpopupcProject.Hide();
devpopupKeyWord.Hide();
devpopupModel.Hide();
devpopupBook.Hide();
devpopupFunction.Hide();
}

function btnUpdate_onclick() {
//devUploadWord.Upload();//Begin Upload File
VerifyImportSource();
}

function onWordCompleted(s, e) {
lblWordSuccess.SetVisible(true);
}

function onDllCompleted(s, e) {
lblDllSuccess.SetVisible(true);
}

function onCodeCompleted(s, e) {
lblCodeSuccess.SetVisible(true);
}

//校验更新数据
function VerifyImportSource() {
var index = grid.cp_index;
if (index < 0) {
txtSourceID = $get("devgvwData$DXPEForm$efnew$txtSourceID");
txtSourceName = $get("devgvwData$DXPEForm$efnew$txtSourceName");
}
else {
txtSourceID = $get("devgvwData$DXPEForm$ef" + index + "$txtSourceID");
txtSourceName = $get("devgvwData$DXPEForm$ef" + index + "$txtSourceName");
}

if (txtSourceID.value.trim() == '') {
alert('资源ID不允许为空');
txtSourceID.focus();
return;
}

if (txtSourceName.value.trim() == '') {
alert('资源名称不允许为空');
txtSourceName.focus();
return;
}

if (grid.cp_key.trim() == '' || grid.cp_key.trim() != txtSourceID.value.trim()) {
ImportSourceService.CheckSourceID(txtSourceID.value.trim(), onSuccessed);//调用webservice
}
else {
grid.UpdateEdit();
}
}

function onSuccessed(result) {
if (!result) {
alert('该资源ID已经存在,请重新输入');
txtSourceID.focus();
return;
}
else {
grid.UpdateEdit(); //Begin Update
}
}

function btnSelectProjcet_Click(element) {
devpopupAllProjcet.ShowAtElement(element);
trlProjcet.PerformCallback();
}

//保存工程分类
function btnSaveProject_Click() {
var arrproject = new Array("projectid", "projectname");
trlProjcet.GetSelectedNodeValues(arrproject, GetSelectedValuesCallback);

}

//获取选择的工程分类
function GetSelectedValuesCallback(values) {
var id = '';
var name = '';
for (var i = 0; i < values.length; i++) {
id += values[i][0] + ',';
name += values[i][1] + ',';
}

var index = grid.cp_index;
if (index < 0) {
txtProject = $get("devgvwData$DXPEForm$efnew$txtProject");
}
else {
txtProject = $get("devgvwData$DXPEForm$ef" + index + "$txtProject");
}

txtProject.value = name;
txtProjectID.PerformCallback(id);

devpopupAllProjcet.Hide();
}

function onKeyWordBlur() {
var index = grid.cp_index;
if (index < 0) {
txtKeyWord = $get("devgvwData$DXPEForm$efnew$txtKeyWord");
}
else {
txtKeyWord = $get("devgvwData$DXPEForm$ef" + index + "$txtKeyWord");
}
ReplaceIlllegal(txtKeyWord);
}

//替换非法字符
function ReplaceIlllegal(textbox) {
if (textbox.value.indexOf(',') != -1) {
textbox.value = textbox.value.replace(/\,/g, ',');
}
if (textbox.value.indexOf('|') != -1) {
textbox.value = textbox.value.replace(/\|/g, ',');
}
if (textbox.value.indexOf('、') != -1) {
textbox.value = textbox.value.replace(/\、/g, ',');
}
}

if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐