Это моя программа, на которой загружается gridview и извлекается запись базы данных в текстовое поле, и я добавляю новую кнопку, чтобы добавить новую строку точно так же, как эта строка, но текстовое поле пуст.Добавить новую строку в gridview, пока кнопка onclick
Я хотел создать новую строку в GridView
, а нажмите кнопку Добавить, а мой TextBox
является получение данных из базы данных. Я пытаюсь запустить код, но ничего не происходит, когда я нажимаю кнопку. Надеюсь, кто-то может помочь. Благодарю.
Мой передний конец кода
<Columns>
<asp:TemplateField HeaderStyle-CssClass="display_none">
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Font-Bold="true" Font-Size="Medium">Name</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderStyle-CssClass="display_none">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" CssClass="NormalInputTextField" Text='<%#Eval("SLMN") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderStyle-CssClass="display_none">
<ItemTemplate>
<asp:Button ID="BtnDelete" runat="server" Text="Delete" CssClass="btn btn-primary" CommandName="remove" CommandArgument='<%# Container.DataItemIndex %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField FooterStyle-BorderStyle="None" HeaderStyle-CssClass="display_none">
<ItemTemplate>
<asp:Button ID="BtnSearch2" runat="server" Text="Search" CssClass="btn btn-primary" CommandName="ViewComments" OnClientClick="javascript:saveData(this,'grid')"/>
</ItemTemplate>
<FooterStyle HorizontalAlign="Right" BorderStyle="None"/>
<FooterTemplate>
<asp:Button ID="BtnAdd" runat="server" Text="Add New Row" CssClass="btn btn-primary" OnClick="ButtonAdd_Click"/>
</FooterTemplate>
</asp:TemplateField>
</Columns>
Мой задний конец кода
private void AddNewRowToGrid()
{
DataTable dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("Column1", typeof(string)));
dt.Columns.Add(new DataColumn("Column2", typeof(string)));
dr = dt.NewRow();
dr["Column1"] = string.Empty;
dr["Column2"] = string.Empty;
dt.Rows.Add(dr);
}
Мое событие OnClick для вызова добавить новую функцию
protected void ButtonAdd_Click(object sender, EventArgs e)
{
AddNewRowToGrid();
}
Мой GridView тег
<grd:MultiSelectGridView ID="grid2" runat="server" Width="500px"
CssClass="paging_gridview" AllowPaging="True"
AutoGenerateColumns ="false" PageSize="10" PagerType="Custom"
ShowFooter="true" OnRowDeleting="grid2_RowDeleting"
MultiSelectDataKeyName="Urid,Name" ShowHeaderWhenEmpty="true"
MultiSelectColumnIndex="0" EnableMultiSelect="false" GridLines="None" BorderStyle="None" OnRowCommand="grid2_RowCommand"
>
я связать свою запись в GridView на странице загрузки
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Loadgrid();
}
}
private void Loadgrid()
{
string branch = txtBranch.Text.Trim();
string name = txtName.Text.Trim();
string sql = "SELECT * FROM fcs_cotmdl WHERE TMDL= '" + name + "'AND CONO='" + branch + "' ";
SqlDataSource2.ConnectionString = ConfigurationManager.ConnectionStrings["ConnStr_epsi"].ConnectionString;
SqlDataSource2.ConnectionString = SqlDataSource2.ConnectionString.Replace("Provider=OraOLEDB.Oracle.1;", "");
SqlDataSource con = new SqlDataSource();
SqlDataSource2.SelectCommand = sql;
grid2.DataSourceID = "SqlDataSource2";
grid2.DataBind();
}
Вы создаете новый DataTable, добавляете один пустой 'DataRow', а затем ничего не делаете с этой таблицей. Вы действительно ожидаете, что этот код добавит новую строку в существующий DataSource? Правильный способ - загрузить «DataSource» из базы данных, поскольку он мог быть изменен тем временем. Затем вы можете легко добавить другую строку. После этого вы назначаете его как DataSource для своего GridView и вызываете 'DataBind'. –
Я еще не смотрел на вашу стену кода, но тот факт, что вы создаете экземпляр нового экземпляра 'DataTable' вместо того, чтобы извлекать существующий, выглядит довольно подозрительно. –
Я не вижу связи/привязки между вашим данным и gridview. – DarkKnight