我被困了,不知道该怎么做,你能帮帮我吗?
我在页面标记中有这个网格
<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(salary)。当用户编辑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();
}
我认为当我更新TextBox时,该行会引发更新事件,但不幸的是,它没有,可能它会导致网格不在editMode中。所以,我只是做了一个解决方法 - 如果TB编辑 - 提出事件并处理它。
好吧,现在页面正在重新加载IsPostback = false,但没有引发任何事件,而不是WebGrid不是TB。
我找到了一些线索here,但我的来源不是SqlDataSource。我的代码有什么问题,来源?在我的情况下,当TB改变时如何更新行。
答案 0 :(得分:0)
只需阅读本文。您将能够从gridview中的文本框中触发textchanged事件 [http://www.codeproject.com/Tips/663684/Fire-TextBox-TextChanged-Event-from-GridView][1]