如鹏网 大学生计算机学习社区

CowNew开源团队

http://www.cownew.com 邮件请联系 about521 at 163.com

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  363 随笔 :: 2 文章 :: 808 评论 :: 0 Trackbacks

#

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !^http://rupeng.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://rupeng.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.rupeng.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.rupeng.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tinyosstudy.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tinyosstudy.com$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe|pdf|attach|chm)$      http://www.rupeng.com


一定要注意保存为Unix格式。有的版本的IE“另存为”发送的referer为空,所以加上第一行“RewriteCond %{HTTP_REFERER} !^$ [NC]”
posted @ 2009-05-04 13:37 CowNew开源团队 阅读(339) | 评论 (0)编辑 收藏

付费解决疑难问题:

杨中科是国内知名的技术图书作者和IT培训讲师,经验丰富,详见百度百科:http://baike.baidu.com/view/1607669.htm 

杨中科在各种主流语言和技术平台上都有过丰富的经验,善于处理各种疑难问题,把您的技术难题提交给我,包您满意。
支付方式: http://item.taobao.com/auction/item_detail.jhtml?item_id=040979d74ff665498567ed0848fc5bf7
支付后和我连接解决问题,对于特别疑难的问题不排除加价的可能。

开源收费服务:

负责解决CowNew开源相关产品的问题,包括使用咨询、产品定制、二次开发、培训等。

服务费以500元为单位,具体费用需要协商。


支付方式:http://item.taobao.com/auction/item_detail.jhtml?x_id=0db2&item_id=237dfa9931ab86dcdd6a2a7a9179c05d
posted @ 2009-03-14 00:07 CowNew开源团队 阅读(262) | 评论 (0)编辑 收藏

     摘要: 第一部分 AppWizard及其工作原理 AppWizard即应用程序向导,它是Visual Studio开发环境中强大的编程工具之一,用它可以创建各种不同类型的程序。比如Win32应用、ATL、MFC应用等等。在Windows的术语中,向导(wizard)一词指得是一个应用程...  阅读全文
posted @ 2009-03-08 00:04 CowNew开源团队 阅读(953) | 评论 (0)编辑 收藏

当自定义的应用程序向导生成一个项目时,则它只是不能替换自动创建的.dsp 项目设置文件。 .dsp 文件中的项目设置由假定所有生成的项目为 MFC 项目的内部规则设置。 但是,Visual C++ 5.0 的新对象模型允许修改工具设置,以便从生成的项目中删除所有依赖 MFC 的自定义 AppWizards。

Visual C++5.0 CCustomAppWiz 类现在具有名为 CustomizeProject 在虚拟重写。 CustomizeProject 提供与 IBuildProject 接口自定义向导。 IBuildProject 配置方法提供了一个的 IConfiguration 界面,用于在项目中每个生成配置。 IConfiguration 可以添加和删除如编译器提供给工具的设置。 在使用这些方法自定义向导可以删除在 MFC 上添加依存关系的设置。

示例代码

以下是示例 CustomizeProject 重写的演示 MFC 依赖项的删除:
   #import "c:\Program Files\DevStudio\SharedIDE\bin\ide\devbld.pkg"
void CNoMfcCustWizAppWiz::CustomizeProject(IBuildProject* pProject)
{
using namespace DSProjectSystem;
long lNumConfigs;
IConfigurationsPtr pConfigs;
IBuildProjectPtr pProj;
// Needed to convert IBuildProject to the DSProjectSystem namespace
pProj.Attach((DSProjectSystem::IBuildProject*)pProject, true);
pProj->get_Configurations(&pConfigs);
pConfigs->get_Count(&lNumConfigs);
//Get each individual configuration
for (long j = 1 ; j < lNumConfigs+1 ; j++)
{
_bstr_t varTool;
_bstr_t varSwitch;
IConfigurationPtr pConfig;
_variant_t varj = j;
pConfig = pConfigs->Item(varj);
// Remove Preprocessor def for MFC DLL specifier, _AFXDLL
varTool   = "cl.exe";
varSwitch = "/D \"_AFXDLL\"";
pConfig->RemoveToolSettings(varTool, varSwitch, varj);
varTool   = "rc.exe";
varSwitch = "/d \"_AFXDLL\"";
pConfig->RemoveToolSettings(varTool, varSwitch, varj);
// OPTIONAL
// Add Libs that MFC headers would have pulled in automatically
// Feel free to customize this listing to your tastes
varTool = "link.exe";
varSwitch = "kernel32.lib user32.lib gdi32.lib winspool.lib "
"comdlg32.lib advapi32.lib shell32.lib ole32.lib "
"oleaut32.lib uuid.lib odbc32.lib odbccp32.lib";
pConfig->AddToolSettings(varTool, varSwitch, varj);
}
}
本代码示例使用 Visual C++ 5.0 的新 COM 编译器支持功能的说明。 # import 语句导入,并创建 DEVBLD.PKG 类型库的所有类型的定义。 这将允许使用窗体 IInterfacePtr 的 COM 智能指针,以及新的 _ bstr _ t 和 _ variant _ t 类型代码。 这些新类型的所有自动清理使用的内存,并在超出范围时释放保持的接口指针。

此外请注意标准的自定义应用程序向导将使用预编译的头文件 StdAfx.h。 应当将放 # import # 结尾处的语句 StdAfx.h 中包含列表。

注意: DevBld.pkg 路径将不同,如果您使用 Visual C++ 版本 6.0。 假设 Visual C++ 版本 6.0 已安装到 C: 驱动器上的默认目录,# import 语句应阅读,如下所示:
   #import "C:\Program Files\Microsoft Visual Studio\Common\MsDev98\Bin\IDE\DevBld.Pkg"
注意: 上面 </a0>-# import 行必须在代码中相同的行。

请参阅有关 Visual C++ 文档。

警告

  • 请注意没有编程的方法可用于删除内部的项目将该控件设置"Microsoft 基础类"设置在常规的项目设置由包含上述代码的自定义向导生成的方式项目仍将显示"使用 MFC 共享 DLL 中"。 您可以更改此设置,唯一方法是不支持修改.dsp 项目设置文件。 但是,此设置仅用于某些 DevStudio MFC 用户界面元素如类向导和一些基于 MFC 的组件库组件。 它应该有一个非 MFC 项目没有影响。
  • 即使后修改项目设置使用 AddToolSettings 和与上面的 RemoveToolSettings,默认项目设置将仍然保持相同 Visual C++ 版本 5.0 中。 如果项目生成此自定义应用程序向导的用户打开项目设置,并单击重置,已还原的项目设置将包含已删除的 MFC 引用。 再次,防止出现这种唯一的方法是使不支持的更改生成的.dsp 项目设置文件手动自定义应用程序向导已创建项目后。

    Visual C++ 版本 6.0 提供新的自动化方法更改默认项目设置的。 配置对象支持 MakeCurrentSettingsDefault 方法。 此方法更改成为当前的设置配置的默认项目设置。
  • 当您使用 RemoveToolSettings 时,删除一次的只有一个工具设置。 在上面示例中进行另一调用 RemoveToolSettings CL.EXE 命令行而不是附加到同一个 varSwitch 语句的末尾删除定义中删除另一个的预处理器定义。 此外,请记住,工具设置的是大小写区分"/ d"和"/ D"不是相同的操作。
  • 遗憾的是,AddToolSettings、 RemoveToolSettings,和 AddCustomBuildStep (另一个 IConfiguration 方法) 运行仅在 Visual C++ 版本 5.0 在整个项目上,他们不能进行工具设置或创建自定义生成步骤单个文件。 是例如最好通常添加处理使用 MIDL 文件并生成 TLB 和其他所需的项目文件的一个项目的 IDL 文件的自定义生成步骤。 在 Developer Studio 97 对象模型不支持此。 单个文件的自定义生成步骤需要自定义应用程序向导生成项目后手动添加。

    Visual C++ 版本 6.0 对象模型不会支持若要更改的方法文件设置,并添加自定义生成步骤的文件。 请参阅 Visual C++ 版本 6.0 文档的下列方法配置对象:
    AddFileSettings
    RemoveFileSettings
    AddCustomBuildStepToFile

转载自:http://support.microsoft.com/kb/173483

大学生计算机学习社区
posted @ 2009-03-08 00:00 CowNew开源团队 阅读(566) | 评论 (0)编辑 收藏

  2005年的时候我大学毕业来到深圳工作,公司负责解决户口,因此户口也就落到了深圳。为啥我要说找个呢?难道我要做“深户担保”?哈哈,我不会贴小广告,具体原因后面你就明白了。

  05年春节我开办了一个开源技术研发组织,因此就创建了第一个网站cownew.com,也就立即备案了,一个礼拜备案就下来了。

  06年底我离开了深圳来到北京发展。转眼到了2008年,我准备创建一个为计算机相关专业提供学习指导服务的网站,所以申请了域名jsj321.com(含义是“计算机321”),然后申请了备案,但是一个多月过去了备案还是没有通过,无奈之下只好花了几十块钱在淘宝网上通过网上那些宣传“快速备案”进行了备案,10分钟就“获得了备案”,6个月之后终于收到哦啊了,计算机321没有通过备案的通知,然后我去备案中心一查原来计算机321买的那个“快速备案”也是上了备案骗子的当了,他们完全是用自己ISP的权限在修改自己手头已有的备案的域名,没过几天他又用这个备案号帮别人“快速备案”了。希望光大站长以后一定不能上这帮人的当,咱们也一起祝愿这些“备案骗子”生孩子没屁眼儿!一气之下计算机321就一直没有备案,2009年随着网站的发展壮大,越来越感到原有域名传播力太差,而且怎么看怎么像垃圾站的域名,所以在会员的帮助下改用了现在的新域名www.rupeng.com (如鹏网),立即备案了,一个礼拜备案就下来了。

  说了一通,到底为啥cownew和如鹏网这么容易备案通过,而计算机321就不容易通过呢?还记得前面我提到的我的户口落在了深圳吗?cownew这个域名备案的时候主办人所在地我当然填的是深圳。而jsj321.com备案的时候由于我在北京,所以主办人所在地我填的是北京,而身份证当然还是深圳的。在备案如鹏网的时候我就想为什么一个备案快一个备案慢的要命呢?我猜是户口的原因,因此我在备案如鹏网的时候主办人所在地也填的是深圳,没想到确实很快就批准下来了。

  这只是我的一个猜想,不过联想到目前的户籍制度,应该是有一定道理的,不是结婚都要回户籍所在地办理的吗?网站备案“回自己家备案”当然会容易很多了。希望正在准备备案的站长可以试一试,也验证一下我的猜想。

posted @ 2009-03-06 23:14 CowNew开源团队 阅读(454) | 评论 (2)编辑 收藏

1、SS在后台:系统设置→搜索优化设置→站点链接URL方式修改为“简短Apache模式”
2、discuz在后台:全局→优化设置→搜索引擎优化→URL 静态化下的几项全部选中。
用记事本建立如下内容文件(要另存为,不能重命名,因为重命名无法重命名为只有后缀的文件名):

RewriteEngine On

# 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase /forum

# Rewrite 系统规则请勿修改
RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
RewriteRule ^tag-(.+)\.html$ tag.php?name=$1


保存到网站根目录。

默认CuteFTP是不会显示.htacess文件的,因为它被Linux认为是隐藏文件,所以需要在cuteftp的过滤器中在弹出的窗口中选中“启用过滤”和“启用服务器端过滤”,并在"远程过滤"中填写"-a"。

posted @ 2009-02-06 00:09 CowNew开源团队 阅读(1008) | 评论 (0)编辑 收藏

1、Validator
2、IsPostBack
3、AutoPostBack。控件离开焦点的时候自动Post。
4、repeater控件的使用。:Repeater控件比以前版本的asp.net好用了,只要 Eval就可以了,不用DataBinder.Eval(container.DataItem,"***"):了,只要Eval("Name")就可以,注意不能丢了前面的“#”。
    <asp:Repeater ID="Repeater1" runat="server">
        <HeaderTemplate>
            嘎嘎嘎
        </HeaderTemplate>
        <ItemTemplate>
        <%# Eval("Name")%>
        <%# Eval("Desc")%>
        </ItemTemplate>
    </asp:Repeater>

        protected void Button3_Click(object sender, EventArgs e)
        {
            List<Person> list = new List<Person>();
            list.Add(new Person(){Name="芭芭拉",Desc="白牙呗"});
            list.Add(new Person(){Name="奥巴马",Desc="黑黝黑"});
            Repeater1.DataSource = list;
            Repeater1.DataBind();
        }
5、DataList控件:
(1)行的高亮选中
     <asp:DataList ID="DataList1" runat="server" >
        <SelectedItemStyle BackColor="#FF6666" />
    <ItemTemplate>
        <%# Eval("Name")%>
        <%# Eval("Desc")%>    
        <asp:LinkButton ID="LinkButton1" runat="server" Text="选择" CommandName="select" />  
    </ItemTemplate>
    </asp:DataList>
核心是CommandName这个属性,可选值还有edit、delete等可选值,当按钮被点击的时候将会执行EditCommand、DeleteCommand等事件。
(2)行的在位编辑:
    <asp:DataList ID="DataList1" runat="server"
        oneditcommand="DataList1_EditCommand">
        <SelectedItemStyle BackColor="#FF6666" />
    <EditItemTemplate>
        <asp:TextBox runat="server" ID="t1" Text='<%# Eval("Name")%>' />
        <asp:TextBox runat="server" ID="t2" Text='<%# Eval("Desc")%>' />
        <asp:Button runat="server" Text="提交" CommandName="update" />
    </EditItemTemplate>
    <ItemTemplate>
        <%# Eval("Name")%>
        <%# Eval("Desc")%>    
        <asp:LinkButton ID="LinkButton1" runat="server" Text="编辑" CommandName="edit" />  
    </ItemTemplate>
    </asp:DataList>

        protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
        {
            DataList1.EditItemIndex = e.Item.ItemIndex;
            ReBind();
        }

        private void ReBind()
        {
            List<Person> list = new List<Person>();
            list.Add(new Person() { Name = "芭芭拉", Desc = "白牙呗" });
            list.Add(new Person() { Name = "奥巴马", Desc = "黑黝黑" });
            Repeater1.DataSource = list;
            Repeater1.DataBind();

            DataList1.DataSource = list;
            DataList1.DataBind();
        }
(3)行的在位编辑并且提交修改
    <asp:DataList ID="DataList1" runat="server"
        oneditcommand="DataList1_EditCommand"
        onupdatecommand="DataList1_UpdateCommand">
        <SelectedItemStyle BackColor="#FF6666" />
    <EditItemTemplate>
        <asp:TextBox runat="server" ID="t1" Text='<%# Eval("Name")%>' />
        <asp:TextBox runat="server" ID="t2" Text='<%# Eval("Desc")%>' />
        <asp:Button runat="server" Text="提交" CommandName="update" />
    </EditItemTemplate>
    <ItemTemplate>
        <%# Eval("Name")%>
        <%# Eval("Desc")%>    
        <asp:LinkButton ID="LinkButton1" runat="server" Text="编辑" CommandName="edit" />  
    </ItemTemplate>
    </asp:DataList>
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["PersonList"] == null)
            {
                List<Person> list = new List<Person>();
                list.Add(new Person() { Name = "芭芭拉", Desc = "白牙呗" });
                list.Add(new Person() { Name = "奥巴马", Desc = "黑黝黑" });
                Repeater1.DataSource = list;
                Repeater1.DataBind();
                Session["PersonList"] = list;
            }           
        }

        protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
        {
            DataList1.EditItemIndex = e.Item.ItemIndex;
            ReBind();
        }

        private void ReBind()
        {
            DataList1.DataSource = Session["PersonList"];
            DataList1.DataBind();           
        }

        protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
        {
            TextBox nT1 = e.Item.FindControl("t1") as TextBox;
            TextBox nT2 = e.Item.FindControl("t2") as TextBox;
            //不要直接从DataList1.DataSource中取,因为取到的是null
            List<Person> list = Session["PersonList"] as List<Person>;
            Person curPerson = list[DataList1.EditItemIndex];
            curPerson.Name = nT1.Text;
            curPerson.Desc = nT2.Text;
            DataList1.EditItemIndex = -1;
            ReBind();
        }
    }
6 GridView控件
    <asp:GridView ID="GridView1" runat="server" AllowSorting="True"
        AutoGenerateColumns="False" onrowcommand="GridView1_RowCommand"
        onsorting="GridView1_Sorting">
        <Columns>
            <asp:ButtonField ButtonType="Button" CommandName="DingGou" HeaderText="订购"
                ShowHeader="True" Text="订购" />
            <asp:ButtonField ButtonType="Button" CommandName="TuiDing" HeaderText="退订"
                ShowHeader="True" Text="退订" />
            <asp:BoundField DataField="Name" HeaderText="名称" SortExpression="Name" />
            <asp:BoundField DataField="Desc" HeaderText="描述" SortExpression="Desc" />
        </Columns>
    </asp:GridView>

        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "DingGou")
            {
                Debug.WriteLine("第"+e.CommandArgument+"行被订购");
            }
        }

        protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {

        }
7、用户控件(UserControl)
通过向导创建一个UserControl,然后就可以任意编辑这个UserControl,而且还可以为UserControl增加属性、事件。使用的时候只要将控件直接从SolutionExplorer拖到页面上就可以。
8、继承控件
(1)通过向导创建一个WebCustomControl。
(2)定义自己应用界面。需要重载从Control类继承来的CreateChildControls方法,并在其中生成界面控件。如果用户定义的控件会在一个页面中反复使用,最好implements System.Web.UI.INamingContainer,它会为该控件创建一个唯一的命名空间。
(3)定义自己控件的消息处理函数。自己定义的控件含有两种类型的消息,一是包含的子控件所产生的消息,二是自定义的控件消息。
9、向工程中添加“Global Application Class”就可以添加Global.asax,在这里可以监听Application、Session的生命周期。
10、(1)Response.Redirect("newpage.aspx");客户端转发
(2)Server.Transfer("newpage.aspx");服务器端转发
11、web.config配置
(1)  <appSettings>
    <add key="FTP" value="127.0.0.1"/>
  </appSettings>
  this.Title = WebConfigurationManager.AppSettings["FTP"];
(2)
  <connectionStrings>
    <add name="mydb"  connectionString="jdbc:ddd"/>
  </connectionStrings>
  this.Title = WebConfigurationManager.ConnectionStrings["mydb"].ConnectionString;
12、BulletedList就是<ul><ol>
13、PostBack本质论
ASP.NET also adds two additional hidden input fields that are used to pass information
back to the server. This information consists of the ID of the control that raised the event and
any additional information that might be relevant. These fields are initially empty, as shown
here:
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
The __doPostBack() function has the responsibility for setting these values with the
appropriate information about the event and then submitting the form. A slightly simplified
version of the __doPostBack() function is shown here:
<script language="text/javascript">
function __doPostBack(eventTarget, eventArgument) {
var theform = document.Form1;
theform.__EVENTTARGET.value = eventTarget;
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
</script>
14、跨页表单提交
在页1中指定按钮的PostBackUrl属性为WebForm1.aspx,这样表单就会提交到WebForm1.aspx了,然后在WebForm1.aspx中还可以取到前一页中所有的值:
TextBox1.Text = PreviousPage.Title;
还可以将PreviousPage cast成更详细的页面子类。
15、取QueryString的方法:
Request.QueryString["recordID"]
16、Server.UrlEncode(lstItems.SelectedItem.Text)
17、Multiview控件用来实现动态界面,Multiview里嵌套多个view控件,每个view控件里可以方式其他控件。通过控制Multiview控件的ActiveViewIndex属性来控制不同View的显示。
18、Wizard控件比Multiview控件更方面,更像一个TabControl
19、动态图片:
在pageload的事件中:
Bitmap image = new Bitmap(300, 50);
Graphics g = Graphics.FromImage(image);
Response.ContentType = "image/png";
image.Save(Response.OutputStream,
System.Drawing.Imaging.ImageFormat.Gif);
20 页面导航
创建SiteMap文件,修改SiteMap文件增加节点。
在页面上增加一个SiteMapDataSource,然后只要拖TreeView、Menu、SiteMapPath等控件上来,指定DataSource属性为SiteMapDataSource就可以了。
21 单值绑定
URL = "Images/picture.jpg";
this.DataBind();
<asp:CheckBox id="chkDynamic" Text="<%# URL %>" runat="server" />
22 下拉列表框绑定
    <asp:DropDownList ID="DropDownList1" runat="server" DataTextField="value"
        DataValueField="key">
    </asp:DropDownList>
    IDictionary<string, string> dict = new Dictionary<string, string>();
    dict["1"] = "aa";
    dict["2"] = "bb";
    DropDownList1.DataSource = dict;
    DropDownList1.DataBind();   
23 设定起始页:在aspx上点右键,选择“Set as startpage”
24 程序中数据库连接字符串的设置
(1)、web.config中加入: 
<connectionStrings>
    <add name="DBConnectionString" connectionString="server=192.168.88.128\SQLEXPRESS1;uid=sa;pwd=123456;database=CRM" providerName="System.Data.SqlClient"/>
  </connectionStrings>
(2)、在IDE中拖放DataSource组件以后,在属性视图的ConnectionString属性中选择DBConnectionString即可。
(3)、程序中读取这个连接字符串的方法:
            System.Configuration.Configuration rootWebConfig =
                System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
            string connString =
                rootWebConfig.ConnectionStrings.ConnectionStrings["DBConnectionString"].ConnectionString;
24 制作简单的CRUD页面的步骤:
(1)拖放一个SqlDataSource组件上来,设定好ConnectionString,命名组件为dsList。
(2)修改SqlDataSource组件的DeleteQuery属性为:delete from T_PSI_User where FId=@FId
InsertQuery属性为:INSERT INTO T_PSI_User(FId, FUserName, FPassword) VALUES (NEWID(),@FUserName,@FPassword)
SelectQuery为:select * from T_PSI_User
UpdateQuery为:Update T_PSI_User set FUserName=@FUserName,FPassword=@FPassword where FId=@FId
(3)拖放一个GridView组件上来,设定其DataSourceID属性为dsList。修改AllowPaging、AllowSorting、AutoGenerateDeleteButton、AutoGenerateEditButton属性为True。设定AutoGeneratedColumns属性为false。设定DataKeyNames属性为FId(这样哪怕隐藏了FId字段,Edit、delete功能也能正常执行了)
(4)修改GridView的Columns属性,在弹出的对话框中点击【RefreshSchema】链接,这样在BoundField下就显示了FId、FName、FPassword三个字段,将FUserName和FPassword字段Add进来。
这样不用一行代码,有删、改功能的页面就做好了。下面来做“增”的功能。
(5)选择GridView组件,在智能提示中选择EditTemplete、然后选择“EmptyTemplete”,拖放一个FormView组件到EmptyTemplete中,选中Formview组件,在智能提示中设定DataSource为dsList。
(6)新建一个【新增】按钮,编辑其Click事件代码为:
            GridView1.DataSourceID = "";
            GridView1.DataBind();
(7)设定FormView的ItemInserted事件代码为:
RefreshList();
RefreshList()函数定义如下:
            GridView1.DataSourceID = "dsList";
            GridView1.DataBind();
这样“增”的功能就做好了,不过还是有缺憾,那就是显示出了不归我们管的FId字段,并且字段名、按钮都是英文的。
(8)选中,FormView组件,然后点击EditTemplete,选中InsertTemplete,这样就可以删除不需要的FId字段了,并且可以修改控件布局以及界面的语言文字。
(9)这样的话Insert界面中的“Cancel取消”按钮还是不能用,编辑FormView1的ItemCommand事件,编写如下的代码:
            if (e.CommandName == "Cancel")
            {
                RefreshList();
            }
25 上面实现CRUD的方法有两个缺陷:
(1)需要编写一个EmptyTemplete
(2)很难对Edit的控件做定制
因此我们还是用ListUI和EditUI分置的方法来解决。步骤:
制作ListUI:
(1)使用datasource、GridView,不过DataSource只要配置SelectQuery、DeleteQuery即可。
(2)GridView不自动生成Edit按钮。
(3)GridView生成一个ButtonField,标题为“编辑”,CommandName="EditInPage"
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "EditInPage")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                Guid guid = (Guid)GridView1.DataKeys[index].Value;
                Server.Transfer("/Sys/SysUserEdit.aspx?Action=Edit&FId="+guid);
            }           
        }
(4)新增按钮的Onclick事件:
Server.Transfer("/Sys/SysUserEdit.aspx?Action=Insert");

制作EditUI:
(1)拖一个DataSouce控件,按常规配置InsertCommand和UpdateCommand,配置SelectCommand为“SELECT * FROM [T_PSI_User] where 1<>1”,配置UpdateCommand为“”
(2)拖一个FormView上来,并且修改EditTemplete和InsertTemplte(可以直接将EditTemplete修改后的拷贝到InsertTemplte,注意不要忘了修改Button的CommandName)
(3)代码;
        protected void Page_Load(object sender, EventArgs e)
        {
            switch (Request["Action"])
            {
                case "Edit":
                    dsEdit.SelectCommand = "select * from T_PSI_User where FId=@FId";
                    dsEdit.SelectParameters.Clear();
                    dsEdit.SelectParameters.Add("FId", Request["FId"]);
                    FormView1.ChangeMode(FormViewMode.Edit);
                    break;
                case "Insert":
                    FormView1.ChangeMode(FormViewMode.Insert);
                    break;
            }
        }

        protected void FormView1_ItemInserted(object sender, FormViewInsertedEventArgs e)
        {
            GogoList();
        }       

        protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
        {
            GogoList();
        }

        private void GogoList()
        {
            Server.Transfer("/Sys/SysUserList.aspx");
        }
    }
    }
26、DropDownList实现基础资料选择器,比如在商品编辑中的选择计量单位:
(1)拖一个针对T_MeasureUnit表的DataSource,比如名字为dsMeasureUnit。
(2)拖一个商品的Datasource,比如dsMerchan。
(3)拖一个FormView上来,并且设定其DataSource为dsMerchan
(4)将一个DropDownList放到FormView中,因为只有这样才能设定DropDownList本身的绑定。
(5)选中DropDownList,在智能提示中选择“ConfigDateSource”,在这里配置上dsMeasureUnit。
(6)选中DropDownList,在智能提示中选择“EditDataBindings”,然后设定绑定到dsMerchan的FMeasureUnitId字段。

源码:http://www.blogjava.net/Files/huanzhugege/PSI.Net.rar

posted @ 2009-01-22 18:04 CowNew开源团队 阅读(506) | 评论 (0)编辑 收藏

今天早上听到这样一个报道:在全球不景气的市场环境下,电子游戏业似乎独自顶住了消极影响,呈现出良好的市场表现,Xbox欧洲销售同比增长124%。而在美国Xbox销售同比增长25%,为历史最好表现。在金融危机下,很多人虚幻世界中寻找慰藉,以转移注意力:电视剧、网络、音乐、小说、电子游戏,以此逃避压力。
碰到过很多这样的人,或者一直找不到工作、或者考研失败或者工作不顺心,碰了几次壁以后不再是“越战越勇”,而是到游戏、网络中逃避压力,靠一次次的打怪、一次次的发灌水帖、看一部部肥皂剧的方式让自己忘记痛苦,当别人劝告他的时候他还美其名曰“玩网游也是一种创业,也能赚钱”,这不禁让我想起了老家里一些常年赌博成性的人嘴里唠叨着“玩麻将也能赚钱”那样好笑。“玩麻将也能赚钱”的人是赌王,人家的目的是赚钱而不是玩儿;同样“玩网游的人也能赚钱”的人是代练公司,而不是把玩网游当成逃避手段的懦夫。
遇到危险时,鸵鸟会把头埋入草堆里,以为自己眼睛看不见就是安全。事实上鸵鸟的两条腿很长,奔跑得很快,遇到危险的时候,其奔跑速度足以摆脱敌人的攻击,如果不是把头埋藏在草堆里坐以待毙的话,是足可以躲避猛兽攻击的。 心理学家将这种消极的心态称之为“鸵鸟心态”。
“鸵鸟心态”是一种逃避现实的心理,也是一种不敢面对问题的懦弱行为。有鸵鸟心态的人,不敢面对现实,不敢担当责任,平常大言不惭,遇到事情来临就畏缩不前了。 课堂上老师要提问的时候,每个学生都噤若寒蝉;做事情失败的时候靠烟酒麻醉自己;听说企业要裁员的时候总是认为“还有比我差的的,裁员也轮不到我”;学校里要选人参加软件大赛的时候,“比我学的好的有的是,轮不到我,我也不去争了”;考研的时候干脆不去参加考试,为自己考研失败找理由“我都没去考试,不能说我能力差了吧”;考试挂科,“我就干脆所有课都挂,难道学校敢开除我?”……
“遇食颈如鹤,遇事头如鳖”、“多做多错、少做少错、不做不错”、“天塌下来有高个儿顶着呢”、“眼不见为净”、“破罐破摔”等等都是鸵鸟心理。
不敢面对现实,而现实却不会因为你的躲避而不会发生。该来的始终会来,躲避是没有用的,只有迎难而上。工作不好找,那就要调整自己的求职策略和求职技巧,必要的话参加培训班给自己充电;企业要裁员,那就要更努力的工作,不要被末尾淘汰掉;公司待遇不好,那就要增强自己的“杀敌本领”,跳到更好的职位,甚至可以筹备自己创业,金融危机下游戏、网络等娱乐业以及培训业反而发展比较快,难道就不能找到一个创业机会,从而使自己在下一个经济大潮来临的时候勇立潮头,要知道现在很多国际性的大公司都是在上一轮的金融危机中脱颖而出的。
万事想开点,勇敢面对现实才能把问题解决。逃避、麻醉自己是懦夫的行为,只有迎难而上才是一个真正的男子汉。
posted @ 2009-01-12 11:59 CowNew开源团队 阅读(3394) | 评论 (5)编辑 收藏

关于女生做IT行业的话题我在jsj321的其他板块也提到过。我的一个原则就是除了天生的天才巾帼英雄之外(这样的人我也碰到过不少),大部分女孩子并不适合长期在第一线从事编程工作,这并不是什么性别歧视,而是考虑到女孩子的生理、心理等各方面的因素说出的这句话。但是这并不说明女孩子不能从事IT相关工作。对于一个计算机专业的女生来说,如果能在IT行业找到自己的位置,那是比转行更加合适的。IT行业的测试工程师(主要做软件的测试)、软件配置管理(主要从事软件的文档、数据库管理、源代码管理等)、项目经理助理(主要辅助项目经理处理项目开发、人员管理中的问题、项目进度管理等)等等这些都是非常适合于女孩子长期发展的,这些职位即对计算机技术有一定要求,而且又不像编程工作一样对技术要求非常高,我有很多同事都是从事这些工作的女孩子,而且做的都很优秀。
这些工作毕竟是贴近于编程一线的工作,因此也不能对编程一窍不通,否则沟通起来很麻烦,建议你在上学期间把专业课学好,同时学好英语,并且锻炼自己的写作能力、沟通能力等,毕业后你的前途是不可限量的。有更多问题欢迎访问http://www.jsj321.com

from:http://www.jsj321.com/forum/viewthread.php?tid=420&extra=page%3D1

posted @ 2008-11-27 22:37 CowNew开源团队 阅读(1016) | 评论 (0)编辑 收藏

 

引用:
Real提问:
小有迷茫,求教
先声明吧,也许这些话过几天自己都会忘记,但确实有发出来的冲动,而且也是反复看过杨老师以前的文章才发出来的。别批评我是愚昧的发牢骚吧。呵呵。
最近一个公司联系到班长说是免费实习,去了以后才发现是个培训机构。教了我们一些ASP的基础,连接数据库,做一些最基本的增删改查,但也有些想法。
1.他们告诉我们代码不是最重要的,代码看看书谁都会,重要的是流程。说刚出来的大学生都是做编码和测试人员,等做了5,6年以后熟悉了再去做设计人员。这对刚学了半年专业课,上了两年半大学还一直以代码至上,看到代码就想吃通吃透的我(们)有些茫然了。真的是这样?
2.培训是一条捷径。杨老师说过嘛,经过2,3个月的培训,我能会,别人也可以会,没有门槛的。但是现实是,人家说找工作就是让你敲代码,熟不熟一眼就看出来了,再告诉我们老板要的是上来能干活的人,自己培训自己很重要。当然,人家是搞培训的,自己也是王婆卖瓜。我们虽然要保持警惕,但事实也正是这样,从上届学生的情况看,在校内接受过一个7000块钱/5个月 的JAVA培训的同学确实找工作比较容易。我们呢?要知识还是要技能?是个问题。毕竟时间有限。
3.刚好也是学期末,做课程设计,最早出来的是数据库的课程设计题目,老师要求也很有意思,前台的语言不限制,于是大家都去图书馆借这样那样的书,走近图书馆,看到5花6门的书,说以前不迷茫只知道学老师教的也许是真的什么都不懂,现在什么都懂一点,迷茫感真的来了。
我以后是做什么?我到的是一个B/S还是一个C/S模式的公司?我应该拿我的这次课程设计来强化自己的哪方面?甚至还真有点“什么技术有前途”的小笑话。
杨老师说大公司考察的就是书本上的内容,好吧,我们不是清华的计算机系,我们当然不能拿我们的前途豪赌,到时候进不了大公司又没有一定的技能——两手空空?
太乱了...也许过几天自己就好了,呵呵。
******************************************

real是jsj321的老会员了,而且你也看过网站上的很多文章了,所以我的“陈词滥调”就不在这里重复了,直接解答你的问题。
1、“代码看看书谁都会,重要的是流程”。对于信息系统开发而言,确实有“业务重于代码”的说法,而且我非常同意,因为在信息系统中系统是供用户使用的,是给用户带来价值的,所以符合用户需求的系统才是好系统,采用什么技术、用什么样的代码写出来的则不是用户关心的。这是站在用户的角度看待技术和业务的,但是被很多从业者偷换概念用来进行妄自菲薄。对于用户来说当然是一个软件开发商怎么开发的他们不用关心,但是对于软件开发商本身也要这么想吗?对于一个企业来说它的唯一使命就是“赤裸裸的赚取利润”,什么是利润?利润就是“收入减去成本”,增加利润只有两条途径“增加收入”或者“削减成本”,企业的收入增长非常难,而“削减成本”则相对较容易。那么对于软件企业来说怎么“削减成本”呢?当然是缩短软件的开发时间了。怎么缩短软件的开发时间呢?软件是软件工程师编写出来的,当然就是要求软件工程师有比较高的编程水平,尽快的开发出高质量的程序来。站到软件开发商老板的角度想一下你还认为软件工程师的水平不重要吗?
“等做了5,6年以后熟悉了再去做设计人员”,“设计人员”这个词是一个非常宽泛的词,软件开发工程师、UI设计师、架构师、业务分析师等等都可以叫做设计人员。我估计他这里说的“设计人员”其实应该指得是“业务分析师”吧。业务分析师是站在用户的角度设计软件的整体业务架构以及产品功能,不用再思考用什么代码编写某个功能,企业里的业务分析师有两个来源:从软件工程师中来、从业务人员中来。比如对于一个财务软件来说,它的业务分析师会从资深的财务系统软件工程师以及经验丰富的会计师中来。一个企业里软件工程师有很多,而业务分析师则是相对来说比较少的,那么什么样的人才会成长为业务分析师呢?一个业务分析师必须有很丰富的项目经验并且在这些项目从事核心工作,一个软件工程师如果没有过硬的编程本领,连简单的功能都不能实现,连软件工程师的本质工作都没能力完成,老板怎么可能让你参与项目的开发又怎么敢让做核心工作呢???没做过这些你又怎么能获得这些经验呢?又怎么能成长为业务分析师呢?
“代码看看书谁都会”,这样的话工作几年后的人说还差不多,对于还没毕业,只学过编程语法、根本没写过像样程序的人敢这么说吗?我给你一个功能需求你能想出来大体用程序怎么实现吗?相信大部分同学都说不出来。一个长跑运动员可以说“跑步就是两条腿前后交替着运动呗”,但是一个刚会四条腿爬着走的婴儿如果说出“跑步谁都会”的话,我只能对着蔚蓝的天空大喊“My God,救救这个孩子吧!”。对着在校生说“代码看看书谁都会,重要的是流程”这种话的人不是存心误人子弟的人就是什么都不懂还要装牛B的人。
2、“经过2,3个月的培训,我能会,别人也可以会,没有门槛的”。其他同学有类似问题也可以访问jsj321.com。我说这句话是对那种把就业培训当成救命稻草的同学说的,这样的同学只是希望大学四年不好好学习,盼望着毕业以后找一个承诺“高薪就业、100%就业”的培训机构学几个月就成功当上白领甚至金领的人说的。对于自学能力稍差的同学来说,在培训机构有老师教能快速的提高技术水平,我从来没否定过。只不过不希望同学们只是寄托于培训机构而已,他们不是你什么都不学都能让你高薪就业的活神仙,不仅要在培训机构好好学,在进这些培训机构之前也要好好学习。争取在大学期间、在培训期间比别人多用功一些,多学一些,那些参加培训的人也不是100%掌握了老师讲的东西,他们能掌握20%就算不错了,只要你比他们多掌握10%,你不就是相当于“你会的他们不会”了吗?
3、“我以后是做什么?我到的是一个B/S还是一个C/S模式的公司?我应该拿我的这次课程设计来强化自己的哪方面?”别想太远了,踏踏实实的走好脚下的每一步,路是人走出来的,整天抬着头看远方的人肯定会被脚下的石子绊倒。我这并不是让同学们没有大的理想,而是希望同学们在走好每一步的基础上再去思考那些问题。等你真实的走过这段以后你会发现你现在思考的问题有多么“傻”(请原谅我用这个词)。把课程设计做好吧,不要抄袭,把课程设计自己做好,哪怕课程设计做好了也要继续研究相关的技术,这是最实际的事情。
4、“我们不是清华的计算机系,不能拿我们的前途豪赌,到时候进不了大公司又没有一定的技能——两手空空”。你可能误解我的意思了,并不是只有大公司才注重基础,除了少数草台班子公司或者皮包公司之外,大部分大中小型公司都是非常欢迎基础扎实的求职者的,而且都会委以重任和重点培养。当然所有公司也都欢迎接受过短期职业培训能够熟练使用一两门工具进行开发的人,但是这些人公司不会重点培养,而且只会给他们一些重复性的劳动,就像流水线上的工人,有几个工厂会把流水线工人培养成骨干呢?又有几个流水线工人认为自己有前途呢?"上等男人豪赌,中等男人不赌,下等男人滥赌"。

from:http://www.jsj321.com/forum/viewthread.php?tid=431&extra=page%3D1

posted @ 2008-11-27 22:32 CowNew开源团队 阅读(1154) | 评论 (0)编辑 收藏

仅列出标题
共30页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last