.ashx 文件用于写web handler的。其实就是带HTML和C#的混合文件。当然你完全可以用.aspx 的文件后缀。使用.ashx 可以让你专注于编程而不用管相关的WEB技术。<!----><o:p></o:p>
可以用于不需要表现页面的处理程序。
Code
<!---->public class FileHandler : IHttpHandler {
const string conString = @"Server=.\SQLExpress;Integrated Security=True;
AttachDbFileName=|DataDirectory|FilesDB.mdf;User Instance=True";
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "application/msword";
SqlConnection con = new SqlConnection(conString);
SqlCommand cmd = new SqlCommand("SELECT FileBytes FROM Files WHERE Id=@Id", con);
cmd.Parameters.AddWithValue("@Id", context.Request["Id"]);
using (con)
{
con.Open();
byte[] file = (byte[])cmd.ExecuteScalar();
context.Response.BinaryWrite(file);
}
}
public bool IsReusable {
get {
return false;
}
}
}
<o:p>
*** 上传大文件<o:p></o:p>
配置文件, httpRuntime maxRequestLength 和 httpRuntime requestLenghtDiskThreshold.
Code
<!---->void AddFile(string fileName, Stream upload)
{
SqlConnection con = new SqlConnection(conString);
SqlCommand cmd = new SqlCommand("INSERT Files (FileName) Values (@FileName);" +
"SELECT @Identity = SCOPE_IDENTITY()", con);
cmd.Parameters.AddWithValue("@FileName", fileName);
SqlParameter idParm = cmd.Parameters.Add("@Identity", SqlDbType.Int);
idParm.Direction = ParameterDirection.Output;
using (con)
{
con.Open();
cmd.ExecuteNonQuery();
int newFileId = (int)idParm.Value;
StoreFile(newFileId, upload, con);
}
}
void StoreFile(int fileId, Stream upload, SqlConnection connection)
{
int bufferLen = 8040;
BinaryReader br = new BinaryReader(upload);
byte[] chunk = br.ReadBytes(bufferLen);
SqlCommand cmd = new SqlCommand("UPDATE Files SET FileBytes=@Buffer WHERE Id=@FileId", connection);
cmd.Parameters.AddWithValue("@FileId", fileId);
cmd.Parameters.Add("@Buffer", SqlDbType.VarBinary, bufferLen).Value = chunk;
cmd.ExecuteNonQuery();
SqlCommand cmdAppend = new SqlCommand("UPDATE Files SET FileBytes .WRITE(@Buffer, NULL, 0) WHERE Id=@FileId", connection);
cmdAppend.Parameters.AddWithValue("@FileId", fileId);
cmdAppend.Parameters.Add("@Buffer", SqlDbType.VarBinary, bufferLen);
chunk = br.ReadBytes(bufferLen);
while (chunk.Length > 0)
{
cmdAppend.Parameters["@Buffer"].Value = chunk;
cmdAppend.ExecuteNonQuery();
chunk = br.ReadBytes(bufferLen);
}
br.Close();
}
</o:p>
读取数据库大二进制byte[]
Code
<!---->context.Response.Buffer = false;
using (con)
{
con.Open();
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
if (reader.Read())
{
int bufferSize = 8040;
byte[] chunk = new byte[bufferSize];
long retCount;
long startIndex = 0;
retCount = reader.GetBytes(0, startIndex, chunk, 0, bufferSize);
while (retCount == bufferSize)
{
context.Response.BinaryWrite(chunk);
startIndex += bufferSize;
retCount = reader.GetBytes(0, startIndex, chunk, 0, bufferSize);
}
byte[] actualChunk = new Byte[retCount - 1];
Buffer.BlockCopy(chunk, 0, actualChunk, 0, (int)retCount - 1);
context.Response.BinaryWrite(actualChunk);
}
}
<o:p></o:p>
***<o:p></o:p>
使用Memu控件和Muliview可以实现tab标签调用效果。<o:p></o:p>
重要的是使用css<o:p></o:p>
.tab<o:p></o:p>
{<o:p></o:p>
border:solid 1px black;<o:p></o:p>
background-color:#eeeeee;<o:p></o:p>
padding:2px 10px;<o:p></o:p>
}<o:p></o:p>
.selectedTab<o:p></o:p>
{<o:p></o:p>
background-color:white;<o:p></o:p>
border-bottom:solid 1px white;<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
<o:p>
</o:p> <!---->
<o:p></o:p>
***<o:p></o:p>
使用Memu控件和Muliview可以实现tab标签调用效果。<o:p></o:p>
重要的是使用css<o:p></o:p>
.tab<o:p></o:p>
{<o:p></o:p>
border:solid 1px black;<o:p></o:p>
background-color:#eeeeee;<o:p></o:p>
padding:2px 10px;<o:p></o:p>
}<o:p></o:p>
.selectedTab<o:p></o:p>
{<o:p></o:p>
background-color:white;<o:p></o:p>
border-bottom:solid 1px white;<o:p></o:p>
}<o:p></o:p>
***<o:p></o:p>
Mutiview可用于向导式的表单,在表单里的按钮识别以下命令:<o:p></o:p>
NextView ----commandName<o:p></o:p>
PreView ----commandName<o:p></o:p>
SwitchViewByID ------CommanArgument<o:p></o:p>
SwichViewByIndex ------CommanArgument<o:p></o:p>
<o:p></o:p>
***<o:p></o:p>
Wizard 控件用于向导式的表单跳转。<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
分享到:
相关推荐
在本主题中,我们将深入探讨"Powerbuilder的富文本Rich控件 editor"。 富文本编辑器通常被称为RTF(Rich Text Format)编辑器,它提供了比普通文本编辑更多的可能性,比如插入图片、设置文本格式、添加超链接等。在...
下面将详细阐述如何在RichEdit控件中使用Picture控件。 首先,理解Picture控件的基本概念。Picture控件是一种容器,它可以持有不同类型的图像,如BMP、JPEG、PNG等,并能在界面上显示这些图像。在RichEdit控件中,...
首先,你需要包含必要的头文件来使用`RichEdit`控件。在你的对话框类的头文件中,添加以下包含语句: ```cpp #include <afxwin.h> // MFC核心和标准部件 #include <afxext.h> // MFC扩展 ``` 接下来,定义对话框类,...
《深入理解RichEdit控件:第四部分》 RichEdit控件是Windows编程中一个强大的文本编辑组件,尤其适用于需要支持复杂格式化和富文本显示的应用程序。在本文中,我们将深入探讨如何使用和管理RichEdit控件,包括其...
//第四步 procedure TRichEditStrings.Insert(Index: Integer; const S: string); .... //要去掉后面两名 // 1.0 uses, 2.0 will error happened 2011 // if RichEdit.SelStart <> (Selection.cpMax + Length(Str...
- 第4章:Visual Studio工作空间 - 第5章:查找和替换以及帮助系统 #### 第二部分:入门指南 (Getting Started) - 第6章:解决方案、项目和项目项 - 第7章:IntelliSense 和书签 - 第8章:代码片段和重构 - 第9章:...
第4章 使用Rich控件 122 4.1 接收上传文件 122 4.1.1 把文件保存到文件系统 123 4.1.2 把文件保存到数据库 125 4.1.3 上传大文件 128 4.2 显示日历 133 4.2.1 创建弹出式日期选择器 135 4.2.2 根据数据库表呈现日历...
第4章 使用rich控件 第二部分 设计asp.net网站 第5章 使用母版页设计网站 第6章 使用主题设计网站 第7章 使用用户?件创建定制控件 第三部分 数据访问 第8章 数据访问概述 第9章 使用sqldatasource控件 第...
第4章 使用rich控件 第二部分 设计asp.net网站 第5章 使用母版页设计网站 第6章 使用主题设计网站 第7章 使用用户?件创建定制控件 第三部分 数据访问 第8章 数据访问概述 第9章 使用sqldatasource控件 第...
- **第4章:从服务器暴露数据:使用WCF RIA服务**:讲解如何通过WCF RIA服务将服务器端的数据集成到Silverlight应用中。 - **第5章:实现汇总列表**:提供关于如何创建和管理汇总列表的技术指导。 - **第6章:构建...
4. **初始化对话框**:在对话框类的` OnInitDialog()` 函数中,你可以对RichEdit控件进行进一步的初始化,比如设置初始文本、字体等。例如: ```cpp CRichEditCtrl* pRichEdit = (CRichEditCtrl*) GetDlgItem(IDC_...
第四章是一步一步地指导读者如何构建一个简单的Silverlight仪表板应用。这一章不仅介绍了基本的操作步骤,还深入讨论了在实际开发过程中可能遇到的问题及解决方法。通过实践操作,读者能够亲身体验到从零开始创建一...
第4章 对话框 4.1 实例46.创建模式对话框 4.2 实例47:创建非模式对话框 4.3 实例48:关闭模式对话框 4.4 实例49:关闭非模式对话框 4.5 实例50:在模式对话框中使用OK和Cancel按钮 4.6 实例51:在非模式对话框中...
第4章 C#语言程序设计 第5章 Web控件 第6章 内置对象 第7章 输入验证 第8章 Rich控件 第9章 用户控件和页面绘图 第10章 样式、主题和母版页 第11章 网站地图与页面导航 第12章 ADO.NET数据库访问技术 第13...
控件可以通过两种方式进行声明:第一种方法是使用标记声明控件,例如:<asp:Label id="message" Text=" 欢迎大家 " runat="server"/>; 第二种方法是使用文本声明控件,例如:<asp:Label id="message" runat="server...
- **第4章:处理事件**:讲解了SWT中的事件驱动机制,包括监听器、适配器等概念,并通过实例展示了如何处理用户输入。 - **第5章:更多控件**:介绍了一些高级控件,如表格、树形视图等,并讨论了它们在实际应用中的...
第4章 C#语言程序设计 第5章 Web控件 第6章 内置对象 第7章 输入验证 第8章 Rich控件 第9章 用户控件和页面绘图 第10章 样式、主题和母版页 第11章 网站地图与页面导航 第12章 ADO.NET数据库访问技术 第13...
第4章 C#语言程序设计 第5章 Web控件 第6章 内置对象 第7章 输入验证 第8章 Rich控件 第9章 用户控件和页面绘图 第10章 样式、主题和母版页 第11章 网站地图与页面导航 第12章 ADO.NET数据库访问技术 第13...
第4章 C#语言程序设计 第5章 Web控件 第6章 内置对象 第7章 输入验证 第8章 Rich控件 第9章 用户控件和页面绘图 第10章 样式、主题和母版页 第11章 网站地图与页面导航 第12章 ADO.NET数据库访问技术 第13...