Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有按钮和文本框的情况下在数据网格视图C#win表单中编辑'cell[i]'?_C#_Winforms_Datagridview - Fatal编程技术网

如何在没有按钮和文本框的情况下在数据网格视图C#win表单中编辑'cell[i]'?

如何在没有按钮和文本框的情况下在数据网格视图C#win表单中编辑'cell[i]'?,c#,winforms,datagridview,C#,Winforms,Datagridview,在winform上,我使用编辑器将数据网格视图绑定到SQL Server数据库。数据源创建了以下对象:绑定源、表适配器、表适配器管理器和绑定导航器。我的目标只是从SQLServer表[getdata]读取信息,允许一些编辑,并将信息传递到数据库表[newdata];。此外,我还向视图中添加了未绑定的列。因此,有“绑定”列和未绑定列。当我运行应用程序时,数据就在那里。但是,我无法编辑任何单元格(未绑定)。栅格视图只读属性设置为false。列只读属性设置为false 我的datagridview代码

在winform上,我使用编辑器将数据网格视图绑定到SQL Server数据库。数据源创建了以下对象:绑定源、表适配器、表适配器管理器和绑定导航器。我的目标只是从SQLServer表[getdata]读取信息,允许一些编辑,并将信息传递到数据库表[newdata];。此外,我还向视图中添加了未绑定的列。因此,有“绑定”列和未绑定列。当我运行应用程序时,数据就在那里。但是,我无法编辑任何单元格(未绑定)。栅格视图只读属性设置为false。列只读属性设置为false

我的datagridview代码是:

private void btnCalcSeason3_Click(object sender, EventArgs e)
{

    cnn.Open();
    DataTable dt = new DataTable();
    SqlDataAdapter adapt = new SqlDataAdapter($@"
            SELECT
                Id
                , Tid
                , NAME
                , OfferedAmount
                , BondNum
                , BondValue
                , BondDate
                , BondBank
                , FinancialIndex
                , CASE
                    WHEN FinancialIndex > {Convert.ToDouble(txtLcl.Text)} THEN 1
                    ELSE 0
                    END AS LCL
                , CASE
                    WHEN FinancialIndex < {Convert.ToDouble(txtUcl.Text)} THEN 1
                    ELSE 0
                    END AS Ucl
                , CASE
                    WHEN FinancialIndex > {Convert.ToDouble(txtLcl.Text)}
                        AND FinancialIndex < {Convert.ToDouble(txtUcl.Text)} THEN
                    'داخل'
                    ELSE 'خارج'
                    END AS luresult
                , IsDelete
                , DeleteDisc
                , CASE
                    WHEN FinancialIndex > {Convert.ToDouble(txtLcl.Text)}
                        AND FinancialIndex < {Convert.ToDouble(txtUcl.Text)} THEN 1
                    ELSE 0
                    END AS valresult
                , CASE
                    WHEN
                        FinancialIndex > {Convert.ToDouble(txtLcl.Text)}
                        AND FinancialIndex < {Convert.ToDouble(txtUcl.Text)}
                    THEN 'پذیرش'
                    ELSE 'حذف'
                    END AS sresult
                , CASE
                    WHEN FinancialIndex < {Convert.ToDouble(txtLcl.Text)} THEN 'حذف - فصل سوم - ماده 9 - فاقد صحت مبانی قیمت و غیرقابل اجرا'
                    WHEN FinancialIndex > {Convert.ToDouble(txtUcl.Text)} THEN 'حذف - فصل سوم - ماده 10 - فاقد صحت مبانی قیمت و غیرقابل اجرا'
                    WHEN 
                        FinancialIndex < {Convert.ToDouble(txtLcl.Text)}
                        AND FinancialIndex > {Convert.ToDouble(txtUcl.Text)}
                    THEN 'حذف - فصل سوم - ماده 9و10 - فاقد صحت مبانی قیمت و غیرقابل اجرا'
                    ELSE ''
                END  AS decription
        FROM Bidder
        WHERE tid = {frmDomain.ID}", cnn);
    adapt.Fill(dt);
    dgSeason3.DataSource = dt;
    dt.Columns.Add("chbCommittee", typeof(bool), "valresult");
    dt.Columns.Add("result", typeof(string), "sresult");
    dt.Columns.Add("discreason", typeof(string), "decription");
    cnn.Close();
    dgSeason3.Columns["Id"].Visible = false;
    dgSeason3.Columns["Tid"].Visible = false;
    dgSeason3.Columns["Name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    dgSeason3.Columns["Name"].HeaderText = "نام شرکت ";
    dgSeason3.Columns["OfferedAmount"].Width = 135;
    dgSeason3.Columns["OfferedAmount"].HeaderText = "مبلغ پیشنهادی";
    dgSeason3.Columns["FinancialIndex"].Width = 110;
    dgSeason3.Columns["FinancialIndex"].HeaderText = "شاخص مالی ";
    dgSeason3.Columns["Lcl"].Width = 120;
    dgSeason3.Columns["Lcl"].HeaderText = "بررسی حد پایین ";
    dgSeason3.Columns["Ucl"].Width = 120;
    dgSeason3.Columns["Ucl"].HeaderText = "بررسی حد بالا";
    dgSeason3.Columns["luresult"].Width = 120;
    dgSeason3.Columns["luresult"].HeaderText = "بررسی محدوده";
    dgSeason3.Columns["chbCommittee"].Width = 120;
    dgSeason3.Columns["chbCommittee"].HeaderText = "نظر کمیته فنی";
    dgSeason3.Columns["result"].Width = 120;
    dgSeason3.Columns["result"].HeaderText = "وضعیت";
    dgSeason3.Columns["discreason"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    dgSeason3.Columns["discreason"].HeaderText = "توضیحات";
    dgSeason3.Columns["IsDelete"].Visible = false;
    dgSeason3.Columns["DeleteDisc"].Visible = false;
    dgSeason3.Columns["BondNum"].Visible = false;
    dgSeason3.Columns["BondValue"].Visible = false;
    dgSeason3.Columns["BondDate"].Visible = false;
    dgSeason3.Columns["BondBank"].Visible = false;
    dgSeason3.Columns["valresult"].Visible = false;
    dgSeason3.Columns["sresult"].Visible = false;
    dgSeason3.Columns["decription"].Visible = false;
    dgSeason3.Columns["OfferedAmount"].DefaultCellStyle.Format = ("#,0");
    dgSeason3.Columns["BondValue"].DefaultCellStyle.Format = ("#,0");
    dgSeason3.ReadOnly = false;
}
private void btncalceasure3\u单击(对象发送者,事件参数e)
{
cnn.Open();
DataTable dt=新的DataTable();
SqlDataAdapter adapt=新的SqlDataAdapter($@)
挑选
身份证件
,工贸署
名称
,报价金额
,邦德纳姆
,债券价值
,债券日期
,债券银行
,财经索引
案例
当FinancialIndex>{Convert.ToDouble(txtLcl.Text)}时,则为1
其他0
以LCL结束
案例
当FinancialIndex<{Convert.ToDouble(txtocl.Text)}时,则1
其他0
以Ucl结束
案例
当FinancialIndex>{Convert.ToDouble(txtLcl.Text)}
和FinancialIndex<{Convert.ToDouble(txtocl.Text)}然后
'داخل'
其他“不”字
以诱惑结束
,伊斯德莱特
,删除光盘
案例
当FinancialIndex>{Convert.ToDouble(txtLcl.Text)}
和FinancialIndex<{Convert.ToDouble(txtocl.Text)}然后是1
其他0
结果
案例
什么时候
FinancialIndex>{Convert.ToDouble(txtLcl.Text)}
和FinancialIndex<{Convert.ToDouble(txtocl.Text)}
然后是“پذیش”
其他的“不”
以sresult结束
案例
当金融指数<{Convert.ToDouble(txtLcl.Text)}时,则为“转换”
当金融指数>转换为双重(文本)时,则为“转换”
什么时候
FinancialIndex<{Convert.ToDouble(txtLcl.Text)}
和FinancialIndex>{Convert.ToDouble(txtocl.Text)}
然后是“十”字
否则“
以描述结束
来自投标人
其中tid={frmDomain.ID},cnn);
适应。填充(dt);
dg3.DataSource=dt;
添加(“CHBCommitte”、类型(bool)、“valresult”);
dt.Columns.Add(“结果”,typeof(字符串),“sresult”);
添加(“离散”,类型(字符串),“说明”);
cnn.Close();
DG3.列[“Id”]。可见=假;
DG3.列[“Tid”]。可见=假;
dGSepase3.Columns[“Name”].AutoSizeMode=DataGridViewAutoSizeColumnMode.DisplayedCells;
DG3.列[“名称”]。标题文本=“نامشکت”;
DG3.列[“报价金额”]。宽度=135;
DG3.第3列[“报价金额”]。标题文本;
DG3.列[“FinancialIndex”]。宽度=110;
DG季刊3.栏目[“FinancialIndex”]。标题文本;
DG3.列[“Lcl”]。宽度=120;
DG3.列[“Lcl”]。标题文本;
DG3.列[“Ucl”]。宽度=120;
DG3.列[“Ucl”]。标题文本=“بسیحدب㶋لا”;
DG3.列[“luresult”]。宽度=120;
DG3.列[“luresult”]。标题文本=“بسسیمحده”;
DG3.列[“CHBCommitte”]。宽度=120;
DG3.栏目[“CHBCommitte”]。标题文本;
DG3.列[“结果”]。宽度=120;
DG3.列[“结果”]。HeaderText=“وضعیت”;
dGSepasion3.Columns[“discreason”]。AutoSizeMode=DataGridViewAutoSizeColumnMode.Fill;
DG3.列[“离散”]。标题文本;
DG3.列[“IsDelete”]。可见=假;
DG3.列[“DeleteDisc”]。可见=假;
DG3.Columns[“BondNum”].Visible=false;
DG3.列[“BondValue”]。可见=假;
DG3.列[“BondDate”]。可见=假;
DG3.列[“债券银行”]。可见=假;
DG3.列[“valresult”]。可见=假;
DG3.列[“sresult”]。可见=假;
DG3.列[“说明”]。可见=假;
dGSepasion3.Columns[“OfferedAmount”].DefaultCellStyle.Format=(“#,0”);
dgsepasion3.Columns[“BondValue”].DefaultCellStyle.Format=(“#,0”);
dg3.ReadOnly=false;
}

将不正确的列名绑定到网格列

您正在使用重载:

dt.Columns.Add("chbCommittee", typeof(bool), "valresult");
dt.Columns.Add("result", typeof(string), "sresult");
dt.Columns.Add("discreason", typeof(string), "decription");
列名应该是
“chbcommitte”
“result”
、和
“discreason”
,但您已经在网格中使用了
“Expression”

dgSeason3.Columns["valresult"].Visible = false;
dgSeason3.Columns["sresult"].Visible = false;
dgSeason3.Columns["decription"].Visible = false;
要修复:

dgSeason3.Columns["chbCommittee"].Visible = false;
dgSeason3.Columns["result"].Visible = false;
dgSeason3.Columns["discreason"].Visible = false;
其他:

正如在注释中提到的,您的代码容易出错。您应该改为使用(或者由于@AlexanderPetrov在其评论中指出的
AddWithValue
问题):

如果您有一个模型列表,然后绑定
L,那么您的代码也会更干净
public class BidderModel {
    public string Id { get; set; } //change `string` into whatever data type your `Id` column is
    public string Tid { get; set; } //change `string` into whatever data type your `Tid` column is
    // . . . . your "bound" columns
   // . . . . your "unbound" columns

}
private void btnCalcSeason3_Click(object sender, EventArgs e)
{

    cnn.Open();
    DataTable dt = new DataTable();
    SqlDataAdapter adapt = new SqlDataAdapter($@"your query", cnn);
    adapt.Fill(dt);

    cnn.Close();

    List<BidderModel> bidders = new List<BidderModel>();
    foreach(DataRow dr in dt.Rows)  // dt is a DataTable
    {
        bidders.Add(new BidderModel() {
            Id = int.Parse(dr["Id"].ToString()),
            Name = dr["Name"].ToString(),
            // . . . and so on and so forth
        });
    }

    dgSeason3.DataSource = bidders;
    
}