我在我的主窗体上有一个dgv,有一个按钮可以打开另一个窗体,将一些数据插入到与dgv绑定的数据源中.我希望当子窗体关闭dgv自动刷新时.我试图在子窗体关闭事件中添加它,但它不刷新:
private void frmNew_FormClosing(object sender, FormClosingEventArgs e)
{
frmMain frmm = new frmMain();
frmm.itemCategoryBindingSource.EndEdit();
frmm.itemsTableAdapter.Fill(myDatabaseDataSet.Items);
frmm.dataGridView1.Refresh();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在父窗体上的按钮中添加此代码时,它实际上可以解决这个问题:
this.itemCategoryBindingSource.EndEdit();
this.itemsTableAdapter.Fill(myDatabaseDataSet.Items);
this.dataGridView1.Refresh();
Run Code Online (Sandbox Code Playgroud) 这非常令人困惑,我使用AsDataView将查询结果绑定到dgv,它可以正常使用以下内容:
var query = from c in myDatabaseDataSet.Diamond where c.p_Id == p_Id select c;
dataGridView1.DataSource = query.AsDataView();
Run Code Online (Sandbox Code Playgroud)
但是,这会导致错误:
var query = from item in myDatabaseDataSet.Items
where item.p_Id == p_Id
join diamond in myDatabaseDataSet.Diamond
on item.p_Id equals diamond.p_Id
join category in myDatabaseDataSet.DiamondCategory
on diamond.dc_Id equals category.dc_Id
select new
{
Product = item.p_Name,
Weight = diamond.d_Weight,
Category = category.dc_Name
};
dataGridView1.DataSource = query.AsDataView();
Run Code Online (Sandbox Code Playgroud)
错误:
Instance argument: cannot convert from
'System.Collections.Generic.IEnumerable<AnonymousType#1>' to
'System.Data.DataTable'
Run Code Online (Sandbox Code Playgroud)
AsDataView不会出现在查询中.(列表).为什么会这样?如何将上面的查询绑定到dgv呢?
当我尝试调用Find()时,我不断收到此错误
public void findTxt(string text)
{
BindingSource src = new BindingSource();
src.DataSource = dataGridView1.DataSource;
src.Position = src.Find("p_Name", text); // Specified method is not supported
if (src.Position == 0 && dataGridView1.Rows[0].Cells[2].Value.ToString() == text)
{
MessageBox.Show("Item found!!");
dataGridView1.CurrentCell = dataGridView1.Rows[src.Position].Cells[2];
}
else if (src.Position == 0 && dataGridView1.Rows[0].Cells[2].Value.ToString() != text)
{
MessageBox.Show("Item not found!!");
}
else
{
MessageBox.Show("Item found!!");
dataGridView1.CurrentCell = dataGridView1.Rows[src.Position].Cells[2];
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
从另一个表单调用findText方法时出现错误,但是从主窗体调用此方法不会导致这样的错误.
我即将向我的客户发布我在C#VS2008中构建的应用程序,我想防止部署后复制滥用,因为很容易将安装文件复制到另一台机器并使用该应用程序.我想限制使用每个安装只有一台计算机.
勾选时,我的复选框列没有响应,显然它被设置为只读,因此将状态再次更改为false将使得可以勾选.但是,这会将整个编辑模式变为true.我尝试将编辑模式设置为编程,同时将ReadOnly模式设置为false,但这将再次禁用该复选框.
如何在复选框列以外的所有单元格上禁用编辑模式?
我正在为最初使用MS Access构建的jewllery商店升级库存系统.应用程序存储项目,客户,供应商,并显示有关存储项目的数据.应考虑使用报告工具为可打印格式的项目生成报告.
系统应该用C#构建,但我还没有决定我应该为这个应用程序使用的数据库引擎.你有什么建议?我想到了SQLite,但我需要记住,从旧数据库到新更新数据库的迁移项是必须的.因为它最初是用MS Access构建的.我应该坚持使用MS Access并使用它构建我的应用程序吗?
编辑:这是一个单一的用户系统.
无论如何我可以在特定日期用来销毁我部署的应用程序吗?如何在安装后的特定日期命令应用程序销毁自己?假设我今天在PC1部署了我的C#应用程序.在特定日期之后,应用程序将被删除并自动从PC1中删除(删除安装文件夹).我怎样才能做到这一点?.如果这是不可能的,至少如何防止用户在特定日期后再使用它?
我正在开发一个将原始数据发送到zebra打印机并打印出条形码的应用程序.由于每个项目都有自己独特的条形码,我需要定义一个自动生成12位数字的唯一数字的变量.
看例子:
printBar prnt = new printBar("123456789012");
Run Code Online (Sandbox Code Playgroud)
无论如何定义一个double变量并将其传递给一个返回uniqely 12位数的函数并将其传递给printBar类?但是如何确保每次访问它都会返回一个唯一的值?
我还想到了另一种方式,因为我使用MS Access数据库,我可以创建一个AutoNumber数据类型的列并将其分配给Random,但是你没有得到所需的确切12位数,有时它会生成10位数的值,有时更多或更少.
所以我有一个字符串:
string x = "DR\nDC\nDD";
Run Code Online (Sandbox Code Playgroud)
我想让每一行都在一个单独的变量中,如下所示:
string y1 = "DR";
String y2 = "DC";
String y3 = "DD";
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?.
我想将标准用户控件外观(按钮,dgv,txtbox等等)和我的表单布局自定义为一个现代化的现代界面,就像任何体面的应用程序一样.我怎样才能做到这一点?.要找什么?任何可能有帮助的文章,书籍......等等!
c# ×9
datagridview ×3
winforms ×3
deployment ×2
.net ×1
data-binding ×1
database ×1
inventory ×1
linq ×1
linq-to-sql ×1
refresh ×1
string ×1
unique ×1