Я застрял и понятия не имею, что делать, не могли бы вы мне помочь?
У меня есть эта сетка в разметке страницы
<asp:GridView ID="gridEmployees" runat="server"
AllowPaging="True"
AllowSorting="<%# AllowSorting %>"
OnPageIndexChanging="grdView_PageIndexChanging"
OnSorting="gridEmployees_Sorting"
OnRowEditing="gridEmployees_RowEditing"
OnRowUpdating="gridEmployees_RowUpdating"
OnRowCancelingEdit="gridEmployees_RowCancelingEdit"
OnRowUpdated="gridEmployees_RowUpdated"
AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="Full name" SortExpression="FullName">
<ItemTemplate>
<asp:Label runat="server" ID="lbSalary" Width="200px" Text='<%# Eval("FullName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Salary" SortExpression="Salary">
<%--http://www.codeproject.com/Articles/23471/Editable-GridView-in-ASP-NET--%>
<ItemTemplate >
<div >
<asp:TextBox Width="100px" OnTextChanged="tbSalary_TextChanged" AutoPostBack="True" style="text-align: right" TextMode="SingleLine" runat="server" ID="tbSalary" Text='<%# Bind("Salary", "{0:c0}") %>'></asp:TextBox>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Я хочу два столбца - label (name) и textBox (зарплата). Когда пользователь редактирует TextBox - данные должны обновляться автоматически.
Мой CodeBehind выглядит так:
private static readonly DbManager DbManager = new DbManager();
private int selectedJobId = 1; // TODO:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ddlJobs.DataTextField = "name";
ddlJobs.DataValueField = "id";
ddlJobs.DataSource = DbManager.GetJobs();
ddlJobs.SelectedValue = selectedJobId.ToString();
ddlJobs.DataBind();
ddlJobs.DataBound += (o, args) =>
{
selectedJobId = Convert.ToInt32(ddlJobs.SelectedValue);
FillTable();
};
}
else
{
selectedJobId = Convert.ToInt32(ddlJobs.SelectedValue);
}
Page.DataBind();
}
protected void FillTable()
{
gridEmployees.DataSource = GetEmployees(); // List<Employees>
gridEmployees.DataBind();
}
Я подумал, что строка обновит событие Update, когда я обновляю TextBox, но, к сожалению, это не так, вероятно, потому что сетка не находится в editMode. Итак, я просто сделал обходной путь - если TB отредактировал - поднять событие и обработать его.
Ну, теперь страница перезагружается с помощью IsPostback = false, но события не возникают, а не WebGrid, а не TB.
Я нашел некоторые подсказки здесь, но мой источник не SqlDataSource. Что случилось с моим кодом, источником? Как обновить строку, когда ТБ изменился в моем случае.
Просто просмотрите это искусство. Вы сможете запустить событие textchange из текстового поля внутри gridview [ http://www.codeproject.com/Tips/663684/Fire-TextBox-TextChanged-Event-from-GridView][1]