gpt4 book ai didi

c# - 索引超出范围c#datagridview

转载 作者:行者123 更新时间:2023-12-02 21:49:32 24 4
gpt4 key购买 nike

我试图将 SQL 查询的结果显示到 datagridview 中,如下所示:

SqlCommand cmd;
SqlDataReader reader_;
SqlConnection ccs = new SqlConnection(MainForm._constR.ToString());

string strSQL_ = "SELECT cp.CouponNumber as cpn, cp.StopOverCode as xo, cp.ReservationBookingDesignator as RBD, cp.Carrier as carrier, cp.FlightNumber as flightNum, cp.UsedClassofService as class_of_service, cp.FlightDepartureDate as f_d_d, cp.FlightDepartureTime as f_d_t, cp.CouponStatus as cp_stat, cp.FareBasisTicketDesignator as farebasis, cp.NotValidBefore as val_bef, cp.NotValidAfter as val_aft, cp.FreeBaggageAllowance as free_bag_allow, cp.FlightBookingStatus as f_booking_stat, cp.OriginAirportCityCode+'/'+cp.DestinationAirportCityCode as GFPA,cp.UsageOriginCode +'/'+ cp.UsageDestinationCode as usg_sector, cp.UsageAirline as usg_airline, cp.UsageDate as usg_date, cp.UsageFlightNumber as usg_f_num, cp.FrequentFlyerReference as FFP FROM [Biatss_PC].[Pax].[SalesDocumentCoupon] as cp JOIN [Biatss_PC].[Pax].[SalesDocumentHeader] as h on h.DocumentNumber = cp.DocumentNumber WHERE h.DocumentNumber = '2581806273' ";//document number to be parsed
//objCmd = new OleDbCommand(strSQL, objConnection);
cmd = ccs.CreateCommand();
ccs.Open();
cmd.CommandText = strSQL_;
reader_ = cmd.ExecuteReader();

int r_ = 0;
int c_ = 0;

if (reader_.HasRows)
{

while (reader_.Read())
{

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["cpn"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["xo"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["GFPA"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["carrier"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["flightNum"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["class_of_service"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["f_d_d"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["f_d_t"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["cp_stat"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["farebasis"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["val_bef"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["val_aft"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["free_bag_allow"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["f_booking_stat"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["RBD"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["usg_sector"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["usg_airline"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["usg_f_num"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["usg_date"].ToString();
c_++;

dbgCPNlist.Rows[r_].Cells[c_].Value = reader_["FFP"].ToString();
c_++;

//so as to be able to start at column-index zero for next row
c_ = 0;
r_++;

}
ccs.Close();
}

但是,当我运行代码时,出现错误,其中要插入第一行的列,并显示

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

我做错了什么?

最佳答案

您可以通过读取DataReader来填充datagridview。在这种情况下,您需要将行显式添加到 datagridview。您当前尝试访问尚不存在的行。

假设当您启动循环时datagridview为空。只需添加:

while (reader_.Read())
{
dbgCPNlist.Rows.Add();
...

关于c# - 索引超出范围c#datagridview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18913508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com