p2p理财大家看仔细啦一下,这是一个网页,用来查看个人成绩,框里是一个datagrid还没有数据,看着东西太少了,

我在dataGrid中的一列(“考试成绩”)使用textbox做模板列,这样就可以文本框的形式显示内容并可以编辑,但不知如何将textbox模板列这些
[问题点数:0分]
我在dataGrid中的一列(“考试成绩”)使用textbox做模板列,这样就可以文本框的形式显示内容并可以编辑,但不知如何将textbox模板列这些
[问题点数:0分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。wpf中如何使用datagrid画出一个表格,我在一个框内输入内容,然后调用数据库,数据库中的内容显示在表格_百度知道
wpf中如何使用datagrid画出一个表格,我在一个框内输入内容,然后调用数据库,数据库中的内容显示在表格
&Trigger Property=& AutoGenerateColumns=& Offset=&/Style& Offset=&
&lt,无非就是把一个记录集通过运算来刷选里面对应页码的记录;
&lt, RoutedEventArgs e)
int pageNum =&&#47.Take(number * currentSize);&
&&#47。所以我们可以用如下代码替换掉&lt.CellTemplate&&lt.CellTemplate&int& EndPoint=&
if (pageNum &
&IsSelected&&#47, 1);姓名&Foreground&quot!--省略N个代码--& /
public enum Sex { 男;
/重新绑定dataGrid1
/DataGrid Name=&执行插入方法;White&/
&sex&操作&Grid&gt。跟踪代码会发现后台得到的值还是原来的;
&#47,职务;&DataGridTemplateColumn&Style&Background&上一页事件
private void btnUp_Click(调用分页方法
4;DataG AutoGenerateColumns=&quot。就是利用到CheckBox控件来完成;&#47.Parse(DataGridTemplateCS
&;&#47!--显示状态时显示 TextBlock里的值--&先定义一个常量
const int Num=12;http:Enum}&{Binding Path=性别}&页&
&lt,编辑完成后执行这个事件就完成更新操作了
&#47!--省略N个代码--&gt.Value&Center&quot, RoutedEventArgs e)
foreach (int FID in selectFID)
&lt.BeginEdit(); Click=&LightPink&//DataTemplate&gt.CellTemplate&gt.CanUserAddRows =&#47,也就是用户必须单击2次才能进行操作;
if (bl == true)
selectFID,怕大家无法理解Binding 后面的值是如何来的了显然这种数据绑定非常的容易;Black&quot, currentsize - 1);();
/ Value=& Binding=&&#47.Columns&&gt.Value&gt,也许不属于样式这类;Setter&
&GradientStop Color=&
int total =1&LightBlue&/&#47:Sex找不到路径
当我们绑定好数据运行程序的时候;
&/Style&&&/ Offset=&CheckBox&&)PS;T&{Binding Source={StaticResource keySex}}&/White&
tbInfo,让你大概知道自己需要的功能是否在这张图里有所实现;
&0&quot.Value&DataGrid FrozenColumnCount=&quot,性别;
& Click=& Width=&True&quot。里面包含FID;&; Value=&quot.DataGrid的分页实现原理;
&lt.DataGrid的增改删功能3.AddedCells[0];Grid&gt: &;&#47,所以篇幅会很长;Setter&LinearGradientBrush StartPoint=&DataG年龄& infoList = new List&
&DataGridC total)
Binding(Num,和跳转页面的事件了
/; SelectedCellsChanged=& Click=&quot.CellStyle&dataGrid1&/&DataGDataGrid&btnSave&1&LightBlue&quot,但是最基本的设计我们还是要会一些;White&
&0;{Binding 公司名称;/
&DataGridTemplateC&/
&& Binding=&DataGrid&gt。以绑定代码为基础添加代码&
&&#47,我们用DataGrid样板标签 DataGridTemplateC&/&#47.com/winfx/2006/xaml" target="_blank">
&lt,接下来就只要完成删除操作就可以了
删除事件如下
private void btnDelete_Click(Background&GO&quot。由属性 CanUserAddRows来控制 当 CanUserAddRows=false的时候就不会自动生成新行;/DataGrid&number表示每个页面显示的记录数
currentSize表示当前显示页数
private void Binding(
if (currentCell.Skip(number * (currentSize - 1));
/& Width=&调用分页方法
显示第一页
dataGrid1.Resources& Offset=&/& Click=&0;DataTemplate&;
&&GradientStop Color=&DataGridTextColumn Header=&/点击添加后
将CanUserAddRows重新设置为True,获取上面定义的资源keyS & Name=&quot!--给单个列表头添加颜色开始(以操作列表头为例)--&gt。
更新记录也是执行该事件
private void dataGrid1_RowEditEnding(
var currentCell = e:T
/1&quot, 1);
Click=&quot。接来下我们再次添加新的代码&
&lt, Mode=TwoW
&lt,职员姓名;/
int FID =/ number + 1;
/StackPanel Orientation=&
&&TextBlock Name=&DataGrid&gt:Key=&quot.Row。显然CheckBox里面还必须绑定值;
这里又会遇到一个问题;&DataGrid&btnDelete_Click&80&
&lt。所以我们就可以摈弃这种现有的 DataGridComboBoxCTextBlock Text=&quot:local=&&GradientStop Color=&
后台 namespace Demo{
/Setter:其实分页功能的实现大家都清楚;btnSave_Click&&
&lt.IsC MainW{Binding 性别}&Information&gt!--给整个表头添加颜色开始--&
&lt:Type Type=&quot:Type&/1&quot, UpdateSourceTrigger=PropertyChanged}&&False&pageSize表示总页数
if (count % number == 0)
pageSize = count &#47.com/winfx/2006/xaml/presentation&/
&lt.Value& Width=&quot.Value& /StackPanel&
&&&gt.Triggers&gt.CellEditingTemplate&White&
&#47.Text);13&Grid&gt.Count == 0)
lt.&#47。这个也是数据绑定的重点;
&lt。我们编辑这些控件时;/ EndPoint=&&#47.Text = currentS
&&#47。 下图列出了生成的列类型;False&quot!--Combox绑定; /Grid&/获取该行的记录
if (judge == 1)
/0;Grid&gt,所以在DataGrid里面设置CanUserAddRows为 /DataG&btnAdd& /13& &
SelectedItem =&公司名称&/ Binding=&
& Name=&Setter Property=&/如果是添加状态就保存该行的值到lstInformation中
这样我们就完成了新行值的获取
lstI/&gt.Parse(tbxPageN/
&DataGridTemplateC SelectionUnit=& SelectionMode=&&#47.ColumnHeaderStyle& number,所以就放在一起归纳了)①给DataGrid自动添加行序号+修改行表头颜色后台代码/False&
tbkC//DataGrid Name=&DataG&
&T&GradientStop Color=&quot,这样DataGrid就会自动生成新行;DataGridTemplateColumn.Add(FID).CellStyle&gt!--这里用到了两种颜色
也可以多层
这样就可以产生一种渐变的效果或立体感--& Offset=&Window_Loaded&, currentsize + 1);
//80& &#47,女 }; ItemsSource=& selectFID = new List&Cell&FontSize& &gt.T80&/ 1)
Binding(Num.CellEditingTemplate&DataGridTemplateColumn Header=&下一页&quot.MethodParameters&gt.AddedC
②给列表头添加颜色 &【当前&0; Width=&&#47.Columns[3])
/保存&dataGrid1&
& /{Binding 性别}&
infoList = infoL
&DataTemplate&gt,供上面这些事件调用后台代码//DataGridTextColumn Header=&btnUp&/
AutoGenerateColumns=&quot.DelInformation(FID);&
&后台代码/ MethodName=&
&lt, Mode=TwoWay,不要写在类里.Parse(tbkCurrentsize,因为你直接可以在DataGrid里面进行编辑;/Style,1&Setter Property=& lstInformation = new List& Binding=&quot,有哪些是被选中的;dataGrid1&quot.RowStyle&
/&Setter Property=&btnSave_Click&/ Width=&Style TargetType=& Foreground=&&#47。这个问题就是绑定模式的问题;
/Setter Property=&DataGrid&分页方法写好了 接下来就是响应下一页;
xmlns,第二次点击才能获取编辑时的焦点;DataGridTemplateC&
&lt.Clear(); Width=&&后台现在就差一个 SelectedCellsChanged(选则单元格时出发该事件)事件的后台代码了private void dataGrid1_SelectedCellsChanged(&Button Content=& SelectedItemBinding=&因为完成了添加操作 所以设置DataGrid不能自动生成新行了
Binding(Num.Triggers&&#47.RDataTemplate&获取到记录后,但我喜欢把改善用户体验归于这一类;DataGrid&
&{Binding Source={StaticResource keySex}}&quot,职务
&True&quot.CellTemplate&&;DataGridTextColumn Header=&quot, RoutedEventArgs e)
judge = 1;
&& Offset=&保存选中要删除行的FID值
private void CheckBox_Click(object sender, int currentSize)
List&ObjectDataProvider&&gt.Text);Red&Setter Property=&&#47,但对于其它控件;
&Background&TextBlock Text=&quot.LoadingRow += new EventHandler&&#47:Name=&LinearGradientBrush&&gt, UpdateSourceTrigger=PropertyChanged}&clr-
&lt, RoutedEventArgs e)
foreach (Information info in lstInformation)
tbInfo.RowHeaderStyle&tbkCurrentsize&&gt.RDataGridCell&&#47。所以我们要做的就是单击第一次的时候用户就可以编辑ComboB&Extended&
进入编辑模式
这样单击一次就可以选择ComboBox里面的值了
⑥固定列表头这个非常简单 只要在DataGrid里添加一个属性即可&
&lt,我们只需要如下几行代码&0&GetValues&&sex&
xmlns=&int&
/&gt, DataGridRowEventArgs e)
ObjectDataProvider。上面引用了命名空间Demo--&DataGridRowEventArgs&dataGrid1&/TextBlock Text=&/删除&quot, UpdateSourceTrigger=PropertyChanged}&&gt,并且还需要一个事件;Setter Property=&
&lt。给CheckBox添加的代码如下& /注意 写在命名空间内 ;
&dataGrid1&1;DataGrid Name=&
&#47:因为这里给dataGrid1绑定了数据源,行失去焦点激发该事件。我们在DataGridTemplateColumn标签里要用到2个控件;;Setter Property=&&15&页】&VisibleWhenSelected&False&quot,1&quot。PS;
&lt.Remove(FID);
pageSize = count &#47,职员姓名;
&lt.Value&gt, 1)。(有些需要用到后台代码;/
&lt.Text);Style&
首先我们先写个分页的方法;:Sex&DataGridRow&
///&Background&获取当前页数
if (currentsize &ObjectDataP保存&quot, UpdateSourceTrigger=PropertyChanged}&GradientStop Color=& &&#47。所以接下来做的工作主要就是给DataGrid上色了.数据绑定(涉及DataGrid绑定和Combox绑定)在DataGrid 中同时包含“自动生成列”与“用户自定义列” 由属性AutoGenerateColumns控制;;Style&
/LinearGradientBrush StartPoint=&(dataGrid_LoadingRow);我自己的数据表实例类
&dataGrid1&/
&&#47。这种机制其实是适合文本框控件的;DataGridTemplateColumn&&#47!--当鼠标经过时 改变颜色--&gt。接下来贴出代码(后面的所有功能都可以在此代码基础上添加和修改)& RowEditEnding=&S公司名称&Grid&如果选中就保存FID
selectFID;{Binding Path=性别}&//DataGrid
Name=&quot,作用是删除记录后重新给DataGrid赋新的数据源
& btnAdd_Click&TextBlock Height=&quot.Text = pageS&{Binding 职员姓名;
Title=&现在为添加状态
dataGrid1;&
&lt://LinearGradientBrush&&&gt!--给整个表头添加颜色结束--&DataGrid Name=&
&&#47,为字段‘性别’提供数据源;
&ObjectDataP/LinearGradientBrush StartPoint=&//dataGrid1& CanUserAddRows=&
&/ Text=&summary&Style TargetType=&btnNext_Click&/ EndPoint=&TextBlock Text=&Setter Property=&quot.DataGrid的增改删功能①添加记录行+编辑记录行由于增加和编辑有一定的联系;&False&Setter!--编辑状态就切换到ComboBox里进行下拉选择操作--& Value=&
&&&= 1 && pageNum &lt,公司名称;W
&#47,上一页;/&#47.ItemsSource = infoL重新回到编辑状态
lstI0,年龄,像ComboBox就显得很不方便了;/调用分页方法
/自动添加序号的事件
调用下面的dataGrid_LoadingRow
public void dataGrid_LoadingRow(/Window.C/
&Setter Property=&quot:使用技术;/GradientStop Color=&tbxPageNum&
dataGrid1;
&DataGrid Name=&quot。如果AutoGenerateColumns=&quot。解释下;btnSave&quot.Columns&
VerticalAlignment=& /Yellow&&#47.xaml 的交互逻辑
//Style TargetType=&TextBlock Text=&&#47、SelectionMode 和 SelectionUnit)和一个新的事件处理程序 (SelectedCellsChanged)前台&//DataTemplate&/True&Button Name=& //Button Content=&Information&gt,0&DataGridRowHeader&quot。接下来我要在DataGrid添加了三个新属性(RowDetailsVisibilityMode.ColumnHeaderStyle&
&lt.DataGrid的样式设计为什么用WPF,但是他不会默认显示出已经设定好的值,DataGrid默认是输入一行记录后自动会生成一个新行(类似MSSQL数据库添加表记录);LinearGradientBrush&gt.Columns&Button Content=&这个是我绑定的一个方法,公司名称;
&/后台dataGrid1; Offset=&CheckBox&
xmlns.ItemsSource = infoLDataG/S/添加&窗体加载事件
private void Window_Loaded(object sender.ToString(), Mode=TwoW5&循环遍历删除里面的记录
/False&20&quot.Parse(tbkT &#47:Demo&获取该行的FID
/转到& Binding=&
&lt,首先第一次单击获取单元格焦点;x:SDataGrid&
/{Binding 公司名称;表示每页显示12条记录
/Background&DataGrid,将记录保存到数据库
judge = 0;
&/页】&TextBlock Text=&Button Name=&Button Content=&
&&/ Foreground=&
&CheckBox &
& Tag=&/TextBlock Text=&quot.Add(info);dataGrid1&/
&btnAdd&quot,但总归是改变外观, UpdateSourceTrigger=PropertyChanged}&quot:assembly=&quot,我们接下来要做的就是获取这些新添加的记录
&DataG如果是编辑状态就执行更新操作
更新操作最简单;/
/DataGridTextColumn Header=&quot,无法获取编辑后的值.MainWindow& ItemsSource=& AutoGenerateColumns=&
&<a href="TextBox Name=&& ObjectType=&quot.InsInformation(info); /IsMouseOver&80&DataGridComboBoxColumn Header=&
④给单元格添加颜色 &DataTemplate&/ Value=&
&#47.UpdInformation(info);Setter Property=&btnDelete&quot.HeaderStyle&gt,因为实际应用中我们大多都是自定义去完成DataGrid的数据绑定;
CanUserAddRows=&Center&DataGrid Name=&;
& AutoGenerateColumns=&DataG我们通过 RowEditEnding来获取新增的记录。当我们的表格里有类似ComboBox的控件时(如;FontSize&
&lt.Triggers&
&&#47:x=&quot,不就是因为WPF拥有绚丽的设计页面功能么(当然远不止这些);
/dataGrid1&刷选第currentSize页要显示的记录集
dataGrid1;&/如果选中取消就删除里面的FID
&#47.com/winfx/2006/xaml&
IsSynchronizedWithCurrentItem=&quot。默认情况下;80&quot, UpdateSourceTrigger=PropertyChanged问题就解决了例如,性别;首先我们要获取CheckBox中的值;
VerticalAlignment=&这个类可以供我调用里面的方法来进行增删改查的操作
private void btnAdd_Click(
& Name=&SkyBlue&
⑤ 让用户在单元格获得焦点时编辑 ComboBox其实这不属于样式的范畴了, SelectedCellsChangedEventArgs e)
if (e,所以下面绑定的字段都是infoList中的字段名称;{Binding 年龄;();& &gt,另一个ComBox来提供选择.&= total)
Binding(Num!--此时的DataGrid就无法自己生成新行了--&gt, DataGridRowEditEndingEventArgs e)
Information info = new Information(); Offset=&
DataTemplate& Content=&quot。因为后面的增加和编辑都在同一个事件中;
&Grid&S/CheckBox_Click&0;W调用分页方法
/ ItemsSource=&&/ /btnAdd_Click&&#47.绑定性别--&/Columns[]从0开始
我这的ComboBox在第四列
dataGrid1;/summary&DataG
&//&Background&
③给行添加颜色+滑鼠事件&DataGridColumnHeader&/ Click=&/&gt.CanUserAddRows =DataGridTextColumn Header=&
&lt,单击保存按钮就可以保存lstInformation中的每一条记录
private void btnSave_Click(
&/Style TargetType=&&Trigger&
&infoList为内容集合(这是我从数据库中获取的记录集合 类型为List&
& Value=&Setter&gt,会发现 DataGridComboBoxColumn下拉框里虽然绑定了值;&Red&
&获取记录总数
int pageSize = 0;
&lt。且作用对象是在属性值更改的情况下进行双向绑定;/ //
&btnGo_Click&False& SelectedItemBinding=&&#47.5&跳转事件
private void btnGo_Click(/
&lt.Parse(tbkCurrentsize.Information& /&0&quot,如果对表格要求不高;/btnUp_Click&&#47:WPF + ADO;
&Width&quot。
&#47, RoutedEventArgs e)
CheckBox dg = sender as CheckBassembly=mscorlib&
&#47。虽然我美工这方面很差劲;&#47://schemas.Header =总页数
int currentsize =
&&lt, RoutedEventArgs e)
int currentsize = int,1&&
&;{Binding Source={StaticResource keySex}}&quot, Mode=TwoWay.Resources&现在我们可以添加新记录了;
&DataGridTemplateC职务&
&lt,我就做了个可以批量删除的删除功能;Trigger&keySex&&/DataGridTemplateColumn Header=&/DataGrid Name=&quot://
&lt.Column == dataGrid1;/
&lt。为了方便我们自己来控制;;True&GradientStop Color=&Foreground& /
Click=&DataG&#47.ToList();
这里的Information是我的数据表实体类
里面包含FID ;&/taskCombo&quot!--省略N个代码--&
infoList = tbInfo, RoutedEventArgs e)
int total =Button Content=&&
&lt!--省略N个代码--&/Information&
&,0&Horizontal& Value=&TextBlock&操作&quot:// RowDetailsVisibilityMode=& Value=&//
&CSDN_C;Width&Foreground&
&#47.Text);/ 表格字段的显示就要靠我们手动去完成了;&#47.MethodParameters&
/SkyBlue&当前页数
if (currentsize &&&已经获取到里面的值了;②删除记录为了有良好的用户体验;,就是每次编辑完行后: DatePicker 控件等);&Grid&&#47。 只要在前面的每个表字段处加上 Mode=TwoWTrigger Property=&S
&lt.microsoft.Text);&&先声明一个存储新建记录集的List&下一页事件
private void btnNext_Click(object sender.ToString();
/& &#47由于涉及的应用比较多;/GradientStop Color=& Value=&DataGridComboBoxColumn Header=& / Value=&quot:Class=&CheckBox Click=&
& Click=&DataGridColumn.GetIndex() + 1;
&lt!--从1开始 1表示第一列 这里如果要固定我的操作列就设置为1--&/Setter Property=&&#47!--给单个列表头添加颜色结束--& Content=&&#47.
&lt。如果AutoGenerateColumns=&/
&&btnNext&quot.GetInformationList();
&40&40&【共&quot。那就是更新数据的时候;&/&#47.Item as I{Binding 职务;White&dataGrid1_SelectedCellsChanged&dataGrid1_RowEditEnding&quot.数据绑定2;Binding(NDataGrid Name=&quot!--省略N个代码--&Window&gt.Triggers&gt,所以就放一起来讨论在上面的代码处添加2个Button按钮;
后台事件 int judge = 0;
&lt,否则台前
&上一页&{Binding FID}&quot!--单元格被选中时 改变颜色--&&lt,同样也对应着我数据表中的字段名;&
&获取数据源
int count = infoL Value=&&#47,总共4个部分1;Style TargetType=&quot,1为添加状态;
&lt,一个 TextBlock控件来显示内容;0表示编辑状态;&DataGridTemplateColumn&
注意 CellTemplate和 CellEditingTemplate的区别2;Style,所以建一个变量来区分操作
TB_Information
tbInfo = new TB_Information();
& & Width=&
/&#47!--引用后台的枚举类型;
/Setter Property=&quot,发现数据更本就没更新;Black& / Value=&quot, DataGrid 将根据数据源自动生成列;/ Value=&添加&由ChecBox的Click事件来记录被选中行的FID
List&&#47.RowStyle&TextBlock Name=&&clr-namespace,我们就能在新行中输入数据了;&lt,我们只需设置双向绑定就可以了;&gt, Mode=TwoWay.HeaderStyle&gt.Parse(tbkTotal.RowHeaderStyle& Margin=&White&性别&MainWindow&&gt.DataGrid的分页实现4,年龄;DataGridColumnHeader&
&0;设置行表头的内容值
接下来就可以修改行表头的颜色了 &Setter Property=&DataGridTemplateColumn Header=&tbkTotal&quot,这中无疑是最简单方便的.DataGrid的样式设计先上一张截图, pageNum);DataTemplate&x;
/Button Content=& &#47.Columns&gt.ToString());
&lt.NET Entity Framework1。但可以确保各个版块相互独立;DataGrid& ;{x
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用一个datagrid控件显示数据库中的某门课的学生,想在显示出来的数据后面添加每个人的成绩,但一修改就弹_百度知道
用一个datagrid控件显示数据库中的某门课的学生,想在显示出来的数据后面添加每个人的成绩,但一修改就弹
姓名用一个datagrid控件显示数据库中的某门课的学生学号,直接在datagrid里修改就弹出缺少更新或刷新键列信息、成绩,想在显示出来的数据后面添加每个人的成绩
commandtype = 2 ② 如果是sql语句 commandtype=1datagrid的datasource 选择为adodc1Adodc1.AddNew Adodc1首先数据库表中是否存在 “成绩”那列在adodc1中配置数据库连接,①如果是单表取数据.Recordset.Recordset
好像没用到adodc1
dataGrid控件的话不好控制最好结合Adodc1使用dataGrid是用于简单报表的
来自团队:
其他类似问题
为您推荐:
datagrid控件的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 大家看年报 的文章

 

随机推荐