`
cpsing
  • 浏览: 72175 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

第四章:使用Rich控件

阅读更多

.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>

分享到:
评论

相关推荐

    Picture控件的使用

    下面将详细阐述如何在RichEdit控件中使用Picture控件。 首先,理解Picture控件的基本概念。Picture控件是一种容器,它可以持有不同类型的图像,如BMP、JPEG、PNG等,并能在界面上显示这些图像。在RichEdit控件中,...

    Powerbuilder的富文本Rich控件 editor

    在本主题中,我们将深入探讨"Powerbuilder的富文本Rich控件 editor"。 富文本编辑器通常被称为RTF(Rich Text Format)编辑器,它提供了比普通文本编辑更多的可能性,比如插入图片、设置文本格式、添加超链接等。在...

    MFC显示载有RichEdit 控件的对话框

    首先,你需要包含必要的头文件来使用`RichEdit`控件。在你的对话框类的头文件中,添加以下包含语句: ```cpp #include &lt;afxwin.h&gt; // MFC核心和标准部件 #include &lt;afxext.h&gt; // MFC扩展 ``` 接下来,定义对话框类,...

    RichEdit控件基础知识之四

    《深入理解RichEdit控件:第四部分》 RichEdit控件是Windows编程中一个强大的文本编辑组件,尤其适用于需要支持复杂格式化和富文本显示的应用程序。在本文中,我们将深入探讨如何使用和管理RichEdit控件,包括其...

    不用第三方控件,让richEdit支持图片与表格换行

    //第四步 procedure TRichEditStrings.Insert(Index: Integer; const S: string); .... //要去掉后面两名 // 1.0 uses, 2.0 will error happened 2011 // if RichEdit.SelStart &lt;&gt; (Selection.cpMax + Length(Str...

    Professional Visual Studio 2012.pdf

    - 第4章:Visual Studio工作空间 - 第5章:查找和替换以及帮助系统 #### 第二部分:入门指南 (Getting Started) - 第6章:解决方案、项目和项目项 - 第7章:IntelliSense 和书签 - 第8章:代码片段和重构 - 第9章:...

    ASP.NET 控件的使用

    第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 根据数据库表呈现日历...

    [ASP.NET.4揭秘(卷1)]谭振林等.扫描版.part1

    第4章 使用rich控件 第二部分 设计asp.net网站 第5章 使用母版页设计网站 第6章 使用主题设计网站 第7章 使用用户?件创建定制控件 第三部分 数据访问 第8章 数据访问概述 第9章 使用sqldatasource控件 第...

    [ASP.NET.4揭秘(卷1)].谭振林等.扫描版.part2

    第4章 使用rich控件 第二部分 设计asp.net网站 第5章 使用母版页设计网站 第6章 使用主题设计网站 第7章 使用用户?件创建定制控件 第三部分 数据访问 第8章 数据访问概述 第9章 使用sqldatasource控件 第...

    Pro Business Applications with Silverlight 5, Second Edition

    - **第4章:从服务器暴露数据:使用WCF RIA服务**:讲解如何通过WCF RIA服务将服务器端的数据集成到Silverlight应用中。 - **第5章:实现汇总列表**:提供关于如何创建和管理汇总列表的技术指导。 - **第6章:构建...

    10.如何显示载有RichEdit 控件的对话框?

    4. **初始化对话框**:在对话框类的` OnInitDialog()` 函数中,你可以对RichEdit控件进行进一步的初始化,比如设置初始文本、字体等。例如: ```cpp CRichEditCtrl* pRichEdit = (CRichEditCtrl*) GetDlgItem(IDC_...

    Microsoft Silverlight 5 Building Rich Enterprise Dashboards

    第四章是一步一步地指导读者如何构建一个简单的Silverlight仪表板应用。这一章不仅介绍了基本的操作步骤,还深入讨论了在实际开发过程中可能遇到的问题及解决方法。通过实践操作,读者能够亲身体验到从零开始创建一...

    VISUAL C++实效编程280例

    第4章 对话框 4.1 实例46.创建模式对话框 4.2 实例47:创建非模式对话框 4.3 实例48:关闭模式对话框 4.4 实例49:关闭非模式对话框 4.5 实例50:在模式对话框中使用OK和Cancel按钮 4.6 实例51:在非模式对话框中...

    ASP.NET 3.5从入门到精通(作者赵晓东,张正礼,许小荣)第4章

    第4章 C#语言程序设计 第5章 Web控件 第6章 内置对象 第7章 输入验证 第8章 Rich控件 第9章 用户控件和页面绘图 第10章 样式、主题和母版页 第11章 网站地图与页面导航 第12章 ADO.NET数据库访问技术 第13...

    ASP.NET服务器端控件培训课件.pptx

    控件可以通过两种方式进行声明:第一种方法是使用标记声明控件,例如:&lt;asp:Label id="message" Text=" 欢迎大家 " runat="server"/&gt;; 第二种方法是使用文本声明控件,例如:&lt;asp:Label id="message" runat="server...

    SWT JFace in Action - GUI Design with Eclipse 3.0-1932394273

    - **第4章:处理事件**:讲解了SWT中的事件驱动机制,包括监听器、适配器等概念,并通过实例展示了如何处理用户输入。 - **第5章:更多控件**:介绍了一些高级控件,如表格、树形视图等,并讨论了它们在实际应用中的...

    ASP.NET 3.5从入门到精通(作者赵晓东,张正礼,许小荣)第6章

    第4章 C#语言程序设计 第5章 Web控件 第6章 内置对象 第7章 输入验证 第8章 Rich控件 第9章 用户控件和页面绘图 第10章 样式、主题和母版页 第11章 网站地图与页面导航 第12章 ADO.NET数据库访问技术 第13...

    ASP.NET 3.5从入门到精通(作者赵晓东,张正礼,许小荣)第2章

    第4章 C#语言程序设计 第5章 Web控件 第6章 内置对象 第7章 输入验证 第8章 Rich控件 第9章 用户控件和页面绘图 第10章 样式、主题和母版页 第11章 网站地图与页面导航 第12章 ADO.NET数据库访问技术 第13...

    ASP.NET 3.5从入门到精通(作者赵晓东,张正礼,许小荣)第3章

    第4章 C#语言程序设计 第5章 Web控件 第6章 内置对象 第7章 输入验证 第8章 Rich控件 第9章 用户控件和页面绘图 第10章 样式、主题和母版页 第11章 网站地图与页面导航 第12章 ADO.NET数据库访问技术 第13...

Global site tag (gtag.js) - Google Analytics