读书人

收集c#(winform、ASP.NET)中一些常见

发布时间: 2012-03-31 13:13:26 作者: rapoo

收集c#(winform、ASP.NET)中一些常见的问题
来csdn安家快一个月了
也遇到了各种各样的问题 和不同的解决方案
所以呢我想收集一些常见问题 方便各位参考

现在大家把问题和答案贴上吧呵呵

我看见很多关于水晶报表和excel导入导出还有word等等许多问题
现在请大家发表意见



[解决办法]
More>>
[解决办法]

[解决办法]
顶一个~~
[解决办法]
不错,收藏一下,顶!
[解决办法]
请教下如何在一个程序窗口中分别输入两项数据啊,为何用PRINTF标示的输出都只能自动选择输入最后一项数据
[解决办法]
占位 学习
[解决办法]
顶……
[解决办法]
顶,大牛好来冒泡了
[解决办法]
好的。楼主继续!
[解决办法]
good idea
[解决办法]
LZ 真是无私。确实需要更多的这样的帖子来解决我们这些新手的烦恼!
[解决办法]
俺只有问题,没答案
[解决办法]
顶?+1
[解决办法]
C#中Winform中,关于路径的获取:
1.Asp.Net WebForm 用
“Request.PhysicalApplicationPath获取站点所在虚拟目录的物理路径,最后包含“\”;

2.C# WinForm 用
A:“Application.StartupPath”:获取当前应用程序所在目录的路径,最后不包含“\”;
B:“Application.ExecutablePath ”:获取当前应用程序文件的路径,包含文件的名称;
C:“AppDomain.CurrentDomain.BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“\”;
D:“System.Threading.Thread.GetDomain().BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“\”;
E:“Environment.CurrentDirectory”:获取当前应用程序的路径,最后不包含“\”;
F:“System.IO.Directory.GetCurrentDirectory”:获取当前应用程序的路径,最后不包含“\”;

3.C# Windows Service
用“AppDomain.CurrentDomain.BaseDirectory”或“System.Threading.Thread.GetDomain().BaseDirectory”;
用“Environment.CurrentDirectory”和“System.IO.Directory.GetCurrentDirectory”将得到“ system32”目录的路径;
如果要使用“Application.StartupPath”或“Application.ExecutablePath ”,需要手动添加对“System.Windows.Forms.dll ”的引用,并在程序开头用“using System.Windows.Forms”声明该引用;

4.在卸载程序获取系统安装的目录
System.Reflection.Assembly curPath = System.Reflection.Assembly.GetExecutingAssembly();
string path=curPath.Location;//得到安装程序类SetupLibrary文件的路径,获取这个文件路径所在的目录即得到安装程序的目录

[解决办法]
标记一下,我的问题都没技术性,就不占地了。

[解决办法]
Mark 一记,帮顶,学习
[解决办法]
GOOD。
先留个记号
[解决办法]
楼主好主意,这个贴标明了分类,来提问的可以先看一看这个帖子.
[解决办法]
操作xml文件

C# code
        /// <summary>        /// 读取配置文件信息        /// </summary>        /// <returns></returns>        public Dictionary<string, string> ReadConfig(string xmlPath)        {            try            {                XmlDocument xmlDoc = new XmlDocument();                xmlDoc.Load(xmlPath);                Dictionary<string, string> dic = new Dictionary<string, string>();                foreach (XmlNode xnode in xmlDoc["configuration"]["appSettings"])                {                    if (xnode.Name == "add")                    {                        dic.Add(xnode.Attributes["key"].Value, xnode.Attributes["value"].Value);                    }                }                return dic;            }            catch (Exception ex)            {                return null;            }        }        /// <summary>        /// 保存配置文件信息        /// </summary>        public bool SaveConfig(string xmlPath,Dictionary<string, string> dic)        {            try            {                XmlDocument xmlDoc = new XmlDocument();                xmlDoc.Load(xmlPath);                XmlNode node = xmlDoc.SelectSingleNode("//appSettings");                foreach (KeyValuePair<string, string> d in dic)                {                    XmlElement elem = (XmlElement)node.SelectSingleNode("//add[@key='" + d.Key + "']");                    if (elem != null)                    {                        elem.SetAttribute("value", d.Value);                    }                    else                    {                        elem = xmlDoc.CreateElement("add");                        elem.SetAttribute("key", d.Key);                        elem.SetAttribute("value", d.Value);                        node.AppendChild(elem);                    }                }                xmlDoc.Save(xmlPath);                return true;            }            catch (Exception ex)            {                return false;            }        } 


[解决办法]
既然你散分 那我就来收分了
[解决办法]
LZ有心人呀
[解决办法]
你这样能撑多少楼啊,在说了,这里面没有搜索
等你翻页之后,你写的技术方法谁能看得到啊,你去发博客吧,这样,有问题的人肯定会先查找,也好得到解决
[解决办法]
学习了~
[解决办法]
路。
[解决办法]
前来顶贴,保留一下
[解决办法]
加密解密字符串

C# code
using System;using System.IO;using System.Security.Cryptography;using System.Text;namespace W.PlatformCore{    public abstract class DES_    {        private static DES mydes = new DESCryptoServiceProvider();        public static string _ks = "public DES_()";        public static string _sq = "728#$$%^TyguyshdsufhsfwofnhKJHJKHIYhfiusf98*(^%$^&&(*&()$##@%%$RHGJJHHJ";        private static byte[] GetLegalKS()        {            string sTemp = _ks;            mydes.GenerateKey();            byte[] bytTemp = mydes.Key;            int KeyLength = bytTemp.Length;            if (sTemp.Length > KeyLength)                sTemp = sTemp.Substring(0, KeyLength);            else if (sTemp.Length < KeyLength)                sTemp = sTemp.PadRight(KeyLength, ' ');            return ASCIIEncoding.ASCII.GetBytes(sTemp);        }        private static byte[] GetLegalSQ()        {            string sTemp = _sq;            mydes.GenerateIV();            byte[] bytTemp = mydes.IV;            int IVLength = bytTemp.Length;            if (sTemp.Length > IVLength)                sTemp = sTemp.Substring(0, IVLength);            else if (sTemp.Length < IVLength)                sTemp = sTemp.PadRight(IVLength, ' ');            return ASCIIEncoding.ASCII.GetBytes(sTemp);        }        public static string Encrypt(string Source)        {            try            {                byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);                MemoryStream ms = new MemoryStream();                mydes.Key = GetLegalKS();                mydes.IV = GetLegalSQ();                ICryptoTransform encrypto = mydes.CreateEncryptor();                CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);                cs.Write(bytIn, 0, bytIn.Length);                cs.FlushFinalBlock();                ms.Close();                byte[] bytOut = ms.ToArray();                return Convert.ToBase64String(bytOut);            }            catch (Exception ex)            {                throw new Exception("在文件加密的时候出现错误!错误提示: \n" + ex.Message);            }        }        public static string Decrypt(string Source)        {            try            {                byte[] bytIn = Convert.FromBase64String(Source);                MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);                mydes.Key = GetLegalKS();                mydes.IV = GetLegalSQ();                ICryptoTransform encrypto = mydes.CreateDecryptor();                CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);                StreamReader sr = new StreamReader(cs);                return sr.ReadToEnd();            }            catch            {                throw new Exception("在文件解密的时候出现错误!错误提示: \n" + ex.Message);            }            return null;        }    }}
[解决办法]
来接分了
[解决办法]
mark
------解决方案--------------------


路过学习中,顶起来
[解决办法]
怎么能完了呢 还要继续呀 这才几个问题呀 最好有点经常用的会遇到的问题 有些问题太偏了!用的少 !
[解决办法]
socket数据传输中的粘包问题。解决:给传输的数据加上一个开始标志和结束标志,对于接收到的数据,先判断有没有开始标志,有的话则保存开始标志后的数据到缓存,并寻找结束标志,遇到结束标志则结束接收;否则,将接收到的数据丢弃。
[解决办法]
前来顶贴,保留一下
[解决办法]
辛苦了
[解决办法]
用oledb的注意点:
oracle 数据库 加参数是用'?' 作占位符;

[解决办法]
顶顶~
[解决办法]
楼主的这个工程太庞大了,会花费很大精力的
[解决办法]
mark
[解决办法]
学习了,不要沉下去。
[解决办法]
1.简单描述Eval和Bind的区别

绑定表达式
<%# Eval("字段名") %>
<%# Bind("字段名") %>


区别 1.eval是只读数据,bind是可更新的.

2.当对次表达式操作时候,必须用Eval 如<%# Eval("字段名").ToString().Trim() %>

2.若GridView中绑定列里面 设置 内容格式 DataFormateString ={0:d} ,则 必须把 属性 HtmlCode 设置为false,否则无法 起作用;

Eval 单向绑定:数据是只读的
Bind 双向绑定:数据可以更改,并返回服务器端,服务器可以处理更改后的数据,如存入数据库.


2、详细介绍
eval()方法在运行时使用反射执行后期绑定计算,因此与标准的ASP.NET数据绑定方法bind相比,会导致性能明显下降。它一般用在绑定时需要格式化字符串的情况下。多数情况尽量少用此方法


Eval 方法是静态(只读)方法,该方法采用数据字段的值作为参数并将其作为字符串返回。Bind 方法支持读/写功能,可以检索数据绑定控件的值并将任何更改提交回数据库。

使用 Eval 方法
Eval 方法可计算数据绑定控件(如 GridView、DetailsView 和 FormView 控件)的模板中的后期绑定数据表达式。在运行时,Eval 方法调用 DataBinder 对象的 Eval 方法,同时引用命名容器的当前数据项。命名容器通常是包含完整记录的数据绑定控件的最小组成部分,如 GridView 控件中的一行。因此,只能对数据绑定控件的模板内的绑定使用 Eval 方法。

Eval 方法以数据字段的名称作为参数,从数据源的当前记录返回一个包含该字段值的字符串。可以提供第二个参数来指定返回字符串的格式,该参数为可选参数。字符串格式参数使用为 String 类的 Format 方法定义的语法。

使用 Bind 方法
Bind 方法与 Eval 方法有一些相似之处,但也存在很大的差异。虽然可以像使用 Eval 方法一样使用 Bind 方法来检索数据绑定字段的值,但当数据可以被修改时,还是要使用 Bind 方法。

在 ASP.NET 中,数据绑定控件(如 GridView、DetailsView 和 FormView 控件)可自动使用数据源控件的更新、删除和插入操作。例如,如果已为数据源控件定义了 SQL Select、Insert、Delete 和 Update 语句,则通过使用 GridView、DetailsView 或 FormView 控件模板中的 Bind 方法,就可以使控件从模板中的子控件中提取值,并将这些值传递给数据源控件。然后数据源控件将执行适当的数据库命令。出于这个原因,在数据绑定控件的 EditItemTemplate 或 InsertItemTemplate 中要使用 Bind 函数。

Bind 方法通常与输入控件一起使用,例如由编辑模式中的 GridView 行所呈现的 TextBox 控件。当数据绑定控件将这些输入控件作为自身呈现的一部分创建时,该方法便可提取输入值。

Bind 方法采用数据字段的名称作为参数,从而与绑定属性关联,如下面的示例所示:
<EditItemTemplate>
<table>
<tr>
<td align=right>
<b>Employee ID:</b>
</td>
<td>
<%# Eval("EmployeeID") %>
</td>
</tr>
<tr>
<td align=right>
<b>First Name:</b>
</td>
<td>
<asp:TextBox ID="EditFirstNameTextBox" RunAt="Server"
Text='<%# Bind("FirstName") %>' />
</td>
</tr>
<tr>
<td align=right>
<b>Last Name:</b>
</td>
<td>
<asp:TextBox ID="EditLastNameTextBox" RunAt="Server"
Text='<%# Bind("LastName") %>' />


</td>
</tr>
<tr>
<td colspan="2">
<asp:LinkButton ID="UpdateButton" RunAt="server"
Text="Update" CommandName="Update" />

<asp:LinkButton ID="CancelUpdateButton" RunAt="server"
Text="Cancel" CommandName="Cancel" />
</td>
</tr>
</table>
</EditItemTemplate>


单击行的 Update 按钮时,使用 Bind 语法绑定的每个控件属性值都会被提取出来,并传递给数据源控件以执行更新操作。


使用 DataBinder.Eval
ASP.NET 提供了一个名为 DataBinder.Eval 的静态方法,该方法计算后期绑定的数据绑定表达式,并将结果格式化为字符串(可选)。利用此方法,可以避免许多在将值强制为所需数据类型时必须执行的显式强制转换操作。

例如,在下面的代码片段中,一个整数显示为货币字符串。使用标准的 ASP.NET 数据绑定语法,必须首先强制转换数据行的类型以便检索数据字段 IntegerValue。然后,这将作为参数传递到 String.Format 方法:


<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %>


将此语法与 DataBinder.Eval 的语法进行比较,后者只有三个参数:数据项的命名容器、数据字段名称和格式字符串。在模板化列表中(如 DataList 类、DataGrid 类或 Repeater 类),命名容器始终是 Container.DataItem。


<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>


格式字符串参数是可选的。如果它被忽略,DataBinder.Eval 将返回类型对象的值,如下面的示例所示:


<%# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %>


当对模板化列表中的控件进行数据绑定时,DataBinder.Eval 特别有用,因为数据行和数据字段通常都必须强制转换。
3.其它
Eval:绑定的是只读数据的显示;Bind:可以绑定只读数据也可以绑定更新数据,Bind方法还把字段和控件的绑定属性联系起来,使得数据控件(比如GridView等)的Update、Insert和Delete等方法可以使用这种联系来作出相应的处理。
Eval 和 Bind绑定的数据在<%# %> 显示, 若对要显示的数据作修改或者操作也在<%# %> 中,例如:

1, 对显示的字符串作字符显示:<%# (Eval("Address")).ToString().SubString(0,10)%>,显示10位数的地址。

2, 对显示的信息作判断:<%# (Eval("if_delete")).ToString == "yes" ?"已删除":"未删除"%>

读书人网 >C#

热点推荐