Я использую элемент жерех GridView, чтобы сделать поиск по базе данных и вернуть некоторые данные, используяИспользование жерех: GridView для заполнения формы
<asp:GridView ID="storedRecordsGrid" AutoGenerateSelectButton="true" emptydatatext="No data available." runat="server">
Так у меня есть GridView, который получает popolated и каждая строка имеет свой собственное событие выбора. Когда пользователь выбирает строку, я хочу использовать данные в этой строке для заполнения texboxes на моей странице.
protected void OnRowCommand(GridViewCommandEventArgs e)
{
}
Так что у меня этот метод и у меня есть текстовые поля, но когда даже пожары выберите Я не знаю, как хранятся данные для каждого colums этой выбранной строки. я хочу иметь что-то вроде.
protected void OnRowCommand(GridViewCommandEventArgs e)
{
mytextbox.text=datagridcolumn.value
}
Я использую .net 2.0 и мой C# код, прямо сейчас выглядит следующим образом.
private DataTable fillGrid(string dComplainantFName,string dComplainantlName)
{
string server = "";
using (SqlConnection cnx = new SqlConnection(server))
using (SqlCommand cmd = new SqlCommand("ComplaintReportLookUp", cnx) { CommandType = CommandType.StoredProcedure })
using (DataTable dt = new DataTable())
{
cmd.Parameters.AddWithValue("@fName", dComplainantFName);
cmd.Parameters.AddWithValue("@lName", dComplainantlName);
try
{
cnx.Open();
dt.Load(cmd.ExecuteReader());
cnx.Close();
return dt;
}
catch (Exception ex)
{
throw new Exception("Error executing MyProcedureName.", ex);
}
}
}
protected void executeGrid(object sender, EventArgs e)
{
storedRecordsGrid.DataSource = this.fillGrid(dComplainantFName.Text,dComplainantLName.Text);
storedRecordsGrid.DataBind();
}
protected void OnRowCommand(GridViewCommandEventArgs e)
{
}
Спасибо за вашу помощь
Спасибо Тиму за помощь это то, что в конечном итоге работает для меня.
protected void gridSelectedIndexChanged(Object sender, EventArgs e)
{
var row = ((GridView)sender).SelectedRow;
//var cell1Text = row.Cells[0].Text; // should be your autogenerated select cell
dComplainantFName.Text = row.Cells[1].Text.Replace(" ", ""); // Text in column 1 (the first column of your DataTable)
dComplainantLName.Text = row.Cells[2].Text.Replace(" ", ""); // Text in column 2 (the second column of your DataTable)
dComplainantMName.Text = row.Cells[3].Text.Replace(" ", "");
dComplainantAddress.Text = row.Cells[4].Text.Replace(" ", "");
dComplainantCity.Text = row.Cells[5].Text.Replace(" ", "");
dComplainantState.Text = row.Cells[6].Text.Replace(" ", "");
dComplainantZip.Text = row.Cells[7].Text.Replace(" ", "");
dComplainantPhone.Text = row.Cells[8].Text.Replace(" ", "");
storedRecordsGrid.Visible = false;
}
Ваше первое предложение работал как шарм я не уверен, где вы видели, я использовал rowcommand, но я был в состоянии чтобы datagrid заполнил текстовые поля, просто добавив onselectedindexchanged (другая команда для 2.0?) и привязка моих текстовых полей к массиву ячеек. Большое вам спасибо за вашу помощь. –
@MichaelCole: Ваш обработчик событий OnRowCommand показал мне это. Btw, событие [SelectedIndexChange было уже там в 2.0] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.selectedindexchanged%28v=vs.80%29.aspx). Я рад слышать, что это работает. –
О, да, я бросил это и использовал метод, который вы мне показали. я выложу код, который я закончил с использованием, поэтому, если кто-то использует в качестве ссылки его не путать –