我想在填充 DataGridView 后动态添加一个按钮列。添加按钮列后可见,但是当我尝试循环遍历 DataGridView 行时,每个单元格中的按钮均为空。
var buttonCol = new DataGridViewButtonColumn();
buttonCol.Name = "ButtonColumnName";
buttonCol.HeaderText = "Header";
buttonCol.Text = "Button Text";
dataGridView.Columns.Add(buttonCol);
foreach (DataGridViewRow row in dataGridView.Rows)
{
var button = (Button)row.Cells["ButtonColumnName"].Value;
// button is null here!
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试selectedindex为我的datagridviewcomboboxcellthroughcellvaluechanged事件设置 ,即当我更改数据网格行中的某些值时,该列应自动更改。这是代码。
Private Sub DataGridView1_CellValueChanged(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
Try
If Me.DataGridView1.Rows(e.RowIndex).Cells(2).Value.ToString <> Nothing Then
Me.DataGridView1("unit_code", e.RowIndex).Value = "1"
MsgBox(Me.DataGridView1.Rows(e.RowIndex).Cells(6).Value)
End If
Else
Exit Sub
End If
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Run Code Online (Sandbox Code Playgroud)
我的 datagridview 绑定到数据集。搜索了许多站点并进行了所有研究,得到了上述解决方案,我们需要将其设置valuemember为.value部分。即使在这样做之后,它也会给system.formatexception:datagridviewcomboboxcell value is not valid.
请帮我。
[编辑]
表结构
unit_code descp
0 -
1 nos
2 kgs
3 gms
[编辑 2]
query = "select Switch(qty=0,'2',qty<=rcvd_qty,'1',rcvd_qty=0,'2',qty>rcvd_qty,'3') …Run Code Online (Sandbox Code Playgroud) 我为dataGridView的DataSource设置了一个List有2个元素,但它总是只有一行,RowCount属性为1。这太奇怪了
我下面的代码有一些实体类名称,我必须解释一下。
HoaDon is Order
ChiTietHoaDon is OrderDetail
SanPham is Product
Run Code Online (Sandbox Code Playgroud)
代码:
using GymFitnessOlympic.Controller;
using GymFitnessOlympic.Models;
using GymFitnessOlympic.Models.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace GymFitnessOlympic.View.ActForm
{
public partial class FrmBanHang2 : Form
{
List<SanPham> allSanPham;
List<ChiTietHoaDon> allChiTiet = new List<ChiTietHoaDon>();
HoaDon hoaDon = new HoaDon();
public FrmBanHang2()
{
InitializeComponent();
int phongID = Login.GetPhongHienTai().MaPhongTap;
allSanPham = SanPhamController.GetList(phongID);
dgrChiTiet.AutoGenerateColumns = false;
dgrChiTiet.AutoGenerateColumns = false;
loadListSanPham(allSanPham);
}
void loadListSanPham(List<SanPham> li)
{
lbSanPham.DataSource …Run Code Online (Sandbox Code Playgroud) 我正在尝试在表中加载时对列进行密码字符化。
下面的代码加载表。
//Fills out Student table
private void loadStudentTable()
{
SqlConnection conn2 = new SqlConnection(@"Data Source=(LocalDB)\v11.0; AttachDbFilename=C:\Users\Donald\Documents\Visual Studio 2013\Projects\DesktopApplication\DesktopApplication\Student_CB.mdf ;Integrated Security=True");
conn2.Open();
try
{
SqlCommand cmdDatabase2 = new SqlCommand("Select * from Student", conn2);
SqlDataAdapter sda2 = new SqlDataAdapter();
sda2.SelectCommand = cmdDatabase2;
DataTable dbdataset2 = new DataTable();
sda2.Fill(dbdataset2);
BindingSource bSource2 = new BindingSource();
bSource2.DataSource = dbdataset2;
studentGridView.DataSource = bSource2;
sda2.Update(dbdataset2);
studentGridView.Columns[0].Width = 92;
studentGridView.Columns[1].Width = 200;
studentGridView.Columns[2].Width = 180;
studentGridView.Columns[3].Width = 180;
studentGridView.Columns[4].Width = 170;
studentGridView.Columns[5].Width = 170;
studentGridView.Columns[6].Width = 130; …Run Code Online (Sandbox Code Playgroud) 我正在学习,Windows Visual C#所以我对此很陌生。我有我的 DataGridView 的单元格单击事件的代码
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
con. ID = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
txtname.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
txtlname.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
}
Run Code Online (Sandbox Code Playgroud)
问题是: 即使我单击 DataGridView 多少次,它也不会触发我的断点。如何解决这个问题?
我的表单的加载事件中有一个方法可以绑定 datagridview。当绑定 datagridview 时,我修改了一些背景色行。
在我使用绑定之前Me.SuspendLayout()和完成时我使用Me.ResumeLayout.
当我的表单第一次加载时,所有行都使用defaultCellStyle. 但是,当我通过组合框上的事件重新加载它时,它按我的预期工作(某些行具有修改后的背景色)。我试图以编程方式更改我的组合框的 selectedIndex 但它也不起作用。
我试图删除布局方法,但它也不起作用。有人可以给我建议吗?
顺便说一下,我正在 VB.NET (Visual Studio 2010) 中进行开发。
编辑 :
Private Sub frm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.SuspendLayout()
loadDTGV()
Me.ResumeLayout()
myCombo.SelectedIndex = 1
End Sub
Private Sub loadDTGV()
Dim dtBindSource As New BindingSource()
Dim lst As SortedBindingList.SortedBindingList(Of myClass)
lst = _DAO.getData()
dtBindSource.DataSource = lst
dtgv.DataSource = dtBindSource
If dtgv.Rows.Count > 0 Then
colorRows()
End If
End Sub
Private Sub colorRows()
Dim …Run Code Online (Sandbox Code Playgroud) 我默认更改了列标题颜色。现在,我想在排序时更改 Windows Form C# 的 DataGridView 中的“排序字形图标”颜色:
见上图。该列已排序,但图标的颜色使其可见性不足。
请让我知道它的颜色是否可以改变。谢谢!
我试图将DataSet每个表中的表绑定到他们自己的表DataGrid,但我不确定如何去做,这是我尝试过的:
<ListView ItemsSource="{Binding CalibrationData.CalibrationValuestoWrite}">
<DataGrid ItemsSource="{Binding}">
</DataGrid>
</ListView>
Run Code Online (Sandbox Code Playgroud)
也许我需要创建一个DataTemplate? 任何帮助是极大的赞赏!
我目前正在尝试第一次使用 datagridview,到目前为止我已经设法用它做很多事情(例如导入文本文件)但是,我在尝试将 datagridview 的内容保存到文本文件时遇到了麻烦。
我目前得到的输出是:
0,
Cat,
Yes,
10,
20,
30,
40,
50,
1,
Dog,
No,
10,
20,
30,
40,
50,
Run Code Online (Sandbox Code Playgroud)
我希望导出看起来像这样:
0, Cat, Yes, 10, 20, 30, 40, 50
1, Dog, No, 10, 20, 30, 40, 50
etc.
Run Code Online (Sandbox Code Playgroud)
这是我目前使用的代码:
using (TextWriter tw = new StreamWriter("example.txt"))
{
for(int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
for(int j = 0; j < dataGridView1.Columns.Count; j++)
{
tw.WriteLine($"{dataGridView1.Rows[i].Cells[j].Value.ToString()},");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里有人能帮我解决这个问题吗?谢谢!
datagridview ×10
c# ×8
winforms ×5
vb.net ×3
wpf ×2
datasource ×1
export ×1
row ×1
sorting ×1
text-files ×1
wpf-controls ×1
xaml ×1