내 GridView의 itemtemplate
에있는 드롭 다운 목록을 바인딩하려고했습니다. 하지만 "인덱스 1이 음수이거나 위의 행 수입니다."라는 위의 오류가 발생했습니다.GridView의 DropDownList 바인딩 오류 인덱스 1이 음수이거나 위의 행 개수입니다.
내 GridView에 ~ 100 개의 행이 있으며 각 드롭 다운 목록을 특정 데이터로 바인딩하고 싶습니다. 오류가 onRowDataBoundEvent
에서 발생하고 디버그 도구에 의한 예외가 GridBinding
메서드에서 출력되어 GridView를 주 데이터와 바인딩합니다.
_grdqans.DataSource = _adl.LoadQans(long.Parse(_hdntstId.Value));
_grdqans.DataBind();
의 GridView 드롭 다운 목록이다 : 여기서
if (e.Row.RowType == DataControlRowType.DataRow)
{
try
{
DropDownList _ddtpcs = (DropDownList)e.Row.Cells[4].FindControl("_ddtsttpc");
if (_ddtstsubs.SelectedIndex != 0 && _ddtstsubs.SelectedIndex != -1)
{
if (_ddtpcs != null)
{
_ddtpcs.DataSource = _adl.LoadTopics(long.Parse(_ddtstsubs.SelectedValue));
_ddtpcs.DataTextField = "top_nm";
_ddtpcs.DataValueField = "top_id";
_ddtpcs.DataBind();
_ddtpcs.Items.Insert(0, new ListItem("Select", "0"));
}
}
}
catch (Exception ex)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "message", POPUPBuilder.ShowPopUpMsg(ex.ToString()), true);
}
}
가 gridbinding위한 코드이다 : 여기
코드이다
<ItemTemplate>
<asp:DropDownList ID="_ddtsttpc" runat="server">
</asp:DropDownList>
</ItemTemplate>
LoadTopics 방법
internal object LoadTopics(long _subId)
{
try
{
cmd = new SqlCommand("sp_LoadTopics", con.getconnection());
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@subId", _subId);
da = new SqlDataAdapter(cmd);
dt.Clear();
da.Fill(dt);
cmd.Parameters.Clear();
cmd.Connection.Close();
cmd.Dispose();
//da.Dispose();
return dt;
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.closeconnection();
}
}
여기서 내가 뭘 잘못하고 있니?
그냥 첫 번째 전달 후 오류가 발생하는 명확한 rowdataboundevent 및 100 줄 gridview 내게 하나의 datarow 예외를 보여줍니다. – Alok
어떤 오류 코드가 그 오류를 던지고 있습니까? – jadarnel27
글쎄, 나는 e.row.rowindex가 grd.rows.count (count-1이어야 함)와 같음을 알았지 만, 왜 이런 일이 일어나는지 이해하지 못한다. – Alok