Я пытаюсь заполнить gridview вручную созданным datatable. У меня две таблицы: «hr_vacancy» второй - «hr_profile». имеют соответствующую колонку «обозначение» и «масштаб». В hr_vacancy есть столбец «working».DataTable Manual Rows Insert: эта строка уже принадлежит этой таблице
Я должен показать количество записей в gridview, которые зависят от количества «работающих». Если в работе у меня есть (например, 3 количество), тогда я проверю погоду профиля, добавьте 3 профиля с таким же «обозначением», который имеет 3 количества в столбце «hr_vacancy.working».
Скажем, если введены два профиля, две записи из «hr_profile» и одна пустая строка, имеющая только это обозначение. Я написал код, который прикреплен, но когда я связываю новый «dr» с datatable, он показывает ошибку, которая «эта строка уже принадлежит этой таблице»
User user = new User();
Util myUtil = new Util();
DbManager dbManager = new DbManager();
string strSQL = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dttempEmployee = new DataTable("TempEmployee");
strSQL = "Select hfmiscode from profile where hfmiscode='1'";
dttempEmployee = dbManager.FillDataTable(strSQL);
DataRow dr = dttempEmployee.NewRow();
strSQL = "select * from hr_vacancy where hfmiscode='398101' order by CONVERT(int, scale) desc";
DataTable dtVacancy = dbManager.FillDataTable(strSQL);
if (dtVacancy.Rows.Count > 0)
{
int intRowCountVacancy=0;
string strDesignation = string.Empty;
string strWorking = string.Empty;
intRowCountVacancy = dtVacancy.Rows.Count;
for (int i = 0; i < intRowCountVacancy; i++)
{
strDesignation = Convert.ToString(dtVacancy.Rows[i]["Designation"]);
strWorking = Convert.ToString(dtVacancy.Rows[i]["working"]);
for (int j = 0; j < Convert.ToInt32(strWorking); j++)
{
strSQL = "select * from profile where hfmiscode='398101' and designation='" + strDesignation +"'";
DataTable dtProfileGet = dbManager.FillDataTable(strSQL);
if (dtProfileGet.Rows.Count > 0 || dtProfileGet.Rows.Count == Convert.ToInt32(strWorking))
{
if (j != Convert.ToInt32(strWorking))
{
// dttempEmployee.NewRow();
if (dtProfileGet.Rows[j]["hfmiscode"] == DBNull.Value)
{
dr["hfmiscode"] = "-";
}
else
{
dr["hfmiscode"] = Convert.ToString(dtProfileGet.Rows[j]["hfmiscode"]);
}
}
}
else
{
if (j != Convert.ToInt32(strWorking))
{
// dttempEmployee.NewRow();
dr["hfmiscode"] = "-";
}
}
dttempEmployee.Rows.Add(dr);
}
}
}
GridView1.DataSource = dttempEmployee;
GridView1.DataBind();
}
}
Примечание: Я использовал «hfmiscode» только один столбец из таблицы hr_profile. Позже я добавлю несколько столбцов.
Советы по заданию вопросов: не добавляйте срочные просьбы или попросите просить - ваши вопросы не важнее всех elses. Усильте свой пост и убедитесь, что предложения начинаются с буквы верхнего регистра, и то же самое для «I», когда вы обращаетесь к себе. Не просите поддержки «один на один» с помощью TeamViewer - это занимает гораздо больше времени, чем обычно могут предлагать добровольцы. – halfer