跟我一起学习.net之一(在学习.net中遇到很多问题,希望大家共同探讨)

王朝c#·作者佚名  2006-01-09
宽屏版  字体: |||超大  

.net 问题与解决

问题一:

SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);

SqlDataAdapter da = new SqlDataAdapter("SELECT say FROM 口号", conn);

DataSet ds = new DataSet();

da.Fill(ds, "kh");

z.DataSource=ds.Tables["kh"].DefaultView;

z.DataBind();

原因与解决方法:

引入名词空间

using System.Data.SqlClient;

using System.Configuration;

*******************************************************************************************************************

问题二:

用microsoft visual studio.net 向导,先是不了数据,不信大家可以试试,下面是我的具体步骤:

1。在工程中新建一个web用户控件:testGrid.ascx

2。往页面中拖放一个SqlDataAdaper,出现一个对话框配置SqlDataAdaper1,

3。点击“下一步”;选择数据连接(我已经有数据连接了,所以从下拉列表中选一项)

4。点击“下一步”选择“使用sql语句”

5。点击“下一步”,点击“查询生成器”选择我想要datagrid显示的表,

6。点击“完成”程序自动生成一个sqlConnection1

7。选中SqlDataAdaper1,点“生成数据集”,接受默认设置,点“确定”,程序自动生成dataSet11

8。!!往页面拖放DataGrid,ID 为DataGrid1

9。选中DataGrid1,点“属性生成器”,设置DataGrid1的属性:

数据源:dataSet11

列: 编辑,更新,取消,---选定的列中把我不想用户编辑的字段的字段设置为“只读”,这是为什么我要使用向导的原因,因为我要是简单的按照emilycsdn(emily)的步骤来的话程序把我的唯一标示的字段也设置为可编辑的状态,这是我不想要的。这时候aspx中关键部分代码为

<asp:DataGrid id="DataGrid1" runat="server" DataKeyField="Type_ID" DataMember="UnitType" EditItemIndex="0">

<Columns>

<asp:BoundColumn DataField="Type_ID" ReadOnly="True" HeaderText="Type_ID"></asp:BoundColumn>

<asp:BoundColumn DataField="Type_Name" HeaderText="Type_Name"></asp:BoundColumn>

<asp:BoundColumn DataField="Type_comment" HeaderText="Type_comment"></asp:BoundColumn>

<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>

</Columns>

</asp:DataGrid>

解决方法:

虽然已将datagrid服务器控件绑定到我们所创建的数据集,但是数据集本身并不会自动填入;相反地,你必须在调用数据适配器方法来自动填入数据集,即使填入数据集后

datagrid 服务器控件不会自动显示数据,你必须将datagrid服务器控件绑定其数据源

在Page_Load中写

sqlConnection1.Open();

sqlDataAdapter1.Fill(dataSet11);

DataGrid1.DataBind();

即可!

****************************************************************************************************************************

问题三:

sqlconnection连接失败,(用属性生成器时)

解决方法:

ConnectinString:server=localhost;uid=sa;pwd=sa;database=test

****************************************************************************************************

问题四;

如何除掉datagrid属性生成器中多余的列

解决方法:

我们去掉“在运行时自动创建列”前面的钩,这样,系统不再自动创建列,而只显示你绑定的列。

*******************************************************************************************

定制DataGrid的外观:

1、选择要显示的列:

在默认的情况下,我们在DataGrid中显示的列就是我们在执行Sql查询语句的时候查询出来的列,什么意思呢?如果我们用Select * from myTable,那么,将会显示所有的列,如果,我们用Select field1,field2 from mytable那么就只显示两个列。所以,在Datagrid中要选择你要显示的列,最简单的方法不是修改属性来完成,而是通过修改Sql查询语句来完成。

还有一个小问题,就是,我们在设计数据库的时候,字段的名称往往是英文的,但是,我们有想在DataGrid中使用中文,我们就需要在select语句中给每个字段取一个中文的别名,比如:Select Name As 姓名,cardid as 工号 from mytable。

有时候,我们不方便用这种方式来选择我们要显示的列,那么,我们就使用属性生成器来设置好了。

在设计视图中,选中DataGrid,然后 “属性窗口”的最下方就会有“属性生成器”的链接,点击这个链接(或者找到columns属性),会弹出一个对话框,我们就可以通过这个对话框来设置要选择的列了:

首先,我们去掉“在运行时自动创建列”前面的钩,这样,系统不再自动创建列,而只显示你绑定的列。

单击左侧的“列”,在右边就出现了“绑定列”“按钮列”等等,这里我们要选择“绑定列”。加入一个绑定列,然后,分别填写“页眉文本”等项目。页眉文本指的是页标题,“数据字段”填写你要显示的字段名称。然后,你要绑定几个字段,就选择几个绑定列。

2、修改DataGrid的样式

默认情况下的DataGrid画出来的表格很难看,所以,我需要定制它的样式。选中DataGrid,属性窗口中的最下方就会出现一个“自动套用格式”的链接,单击这个链接,就会弹出一个让你选择格式的对话框,选择你中意的格式。

我不知道你会怎么认为,反正,我觉得这里面有两种格式很合我的胃口,并且,也符合公司的设计规范,所以,我往往会使用这些格式。如果你还不满意,那么你就需要自己定制了。自己定制也很简单,就是,你去修改“样式”类的属性值就可以了。另外,你还可以通过属性生成器来完成样式属性的修改。比如,你不想让你的表格回行,那么,你就到属性生成器中,选择“格式”,然后,在右边选择“项”,把各个分项中的“单元格内文本换行”前面的钩去掉就ok了。

*******************************************************************************************************************************

动态加载用户控件:

想要用程序控制方法给web form网页加入用户控件,依照布凑进行

1:先将欲动态加入用户控件的web form的网页的。aspx文件切换到html视图,然后在顶端使用语法如下的@Reference指令语句来登陆用户控件:

<%@Reference Control="pathtofile"%>

@Reference指令能够让你以动态方法编译与链接用户控件,并将它加至网页的ControlCollection对象中,此举可以让你在调用LoadControl方法之后,将返回的类型转换。比方说,如果你要使用MyFirstWebUserControl.ascx,请这样写:

<%@Reference Control="MyFirstWebUserControl.ascx"%>

2:在代码后置类文件(web form.cs)文件中,建立用户控件实例,并视需要设置用户控件的相关属性,写法如下:

UserControl mycontrol=(UserControl)LoadControl("MyFirstWebUserControl.ascx");

((MyFirstWebUserControl)mycontrol).Backcolor="red";

((MyFirstWebUserControl)mycontrol).Forecolor="Yellow";

page.Controls.Add(mycontrol);

如果使用add方法将用户控件加至ControlConnection对象,它们会被放到集合中的结尾。如果你希望将用户控件加至集合中

特定的索引位置,请使用AddAt方法。

或者利用容器:Panel利用容器可以有效地控制控件的位置:

Panel1.Controls.Add(mycontrol);

***********************************************************************************************888

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有