web窗体中有一个gridview控件,是可编辑的,代码如下:
<asp:GridView ID="CourseView" DataSourceID="myCourseView" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="开始日期" ItemStyle-Width="60px" >
<ItemTemplate >
<asp:TextBox ID="txtStartDate" runat="server" Text=' <%#Eval("StartDate","{0:yyyy-M-dd}")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="开始时间" ItemStyle-Width="50px" >
<ItemTemplate >
<asp:TextBox ID="txtStartTime" runat="server" Text=' <%#Eval("StartTime")%>' Width="50px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="结束日期" ItemStyle-Width="60px">
<ItemTemplate >
<asp:TextBox ID="txtEndDate" runat="server" Text=' <%#Eval("EndDate","{0:yyyy-M-dd}")%>' Width="60px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="结束时间" ItemStyle-Width="50px" >
<ItemTemplate >
<asp:TextBox ID="txtEndTime" runat="server" Text=' <%#Eval("EndTime")%>' Height="14px" Width="50px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="培训地点" ItemStyle-Width="70px" >
<ItemTemplate >
<asp:TextBox ID="txtAddress" runat="server" Text=' <%#Eval("TrainingPlace")%>' Height="14px" Width="70px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="培训部门" ItemStyle-Width="65px" >
<ItemTemplate >
<asp:TextBox ID="txtDepartment" runat="server" Text=' <%#Eval("Department")%>' Height="14px" Width="65px"> </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate>
<asp:ImageButton ID="ImageButton1" ImageUrl="~/Image/add.gif" runat="server" title ="增加新课程" OnClick="CourseAdd_Click"/>
</HeaderTemplate>
<ItemTemplate >
<asp:ImageButton ID="ImageButton2" runat="server" title="删除" ImageUrl="~/Image/delete.gif" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>可以看到这个girdview控件一共有7列,在后台代码的page_load事件中为gridview绑定了数据源,代码如下:
myCourseView.SelectCommand = "select * from PLAN_DETAIL where TrainingNo='" + strTrainNo + "'order by StartDate,StartTime";
CourseView.DataBind();
我现在实现的功能是,点击ImageButton1则gridview新增一空行,里边没有数据,我可以自己填数据,请问高手我该如何实现,有没有简单的方法,请高手给个代码例子
<asp:GridView ID="CourseView" DataSourceID="myCourseView" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="开始日期" ItemStyle-Width="60px" >
<ItemTemplate >
<asp:TextBox ID="txtStartDate" runat="server" Text=' <%#Eval("StartDate","{0:yyyy-M-dd}")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="开始时间" ItemStyle-Width="50px" >
<ItemTemplate >
<asp:TextBox ID="txtStartTime" runat="server" Text=' <%#Eval("StartTime")%>' Width="50px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="结束日期" ItemStyle-Width="60px">
<ItemTemplate >
<asp:TextBox ID="txtEndDate" runat="server" Text=' <%#Eval("EndDate","{0:yyyy-M-dd}")%>' Width="60px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="结束时间" ItemStyle-Width="50px" >
<ItemTemplate >
<asp:TextBox ID="txtEndTime" runat="server" Text=' <%#Eval("EndTime")%>' Height="14px" Width="50px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="培训地点" ItemStyle-Width="70px" >
<ItemTemplate >
<asp:TextBox ID="txtAddress" runat="server" Text=' <%#Eval("TrainingPlace")%>' Height="14px" Width="70px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="培训部门" ItemStyle-Width="65px" >
<ItemTemplate >
<asp:TextBox ID="txtDepartment" runat="server" Text=' <%#Eval("Department")%>' Height="14px" Width="65px"> </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate>
<asp:ImageButton ID="ImageButton1" ImageUrl="~/Image/add.gif" runat="server" title ="增加新课程" OnClick="CourseAdd_Click"/>
</HeaderTemplate>
<ItemTemplate >
<asp:ImageButton ID="ImageButton2" runat="server" title="删除" ImageUrl="~/Image/delete.gif" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>可以看到这个girdview控件一共有7列,在后台代码的page_load事件中为gridview绑定了数据源,代码如下:
myCourseView.SelectCommand = "select * from PLAN_DETAIL where TrainingNo='" + strTrainNo + "'order by StartDate,StartTime";
CourseView.DataBind();
我现在实现的功能是,点击ImageButton1则gridview新增一空行,里边没有数据,我可以自己填数据,请问高手我该如何实现,有没有简单的方法,请高手给个代码例子
insertrow,insertcell方法
具体的JS操作表格参考:
http://blog.chinaunix.net/u1/57965/showart.php?id=688399
http://hi.baidu.com/missing330/blog/item/ef631b828cd6bebc6d81192b.html
<ItemTemplate><%#Eval("....")%></ItemTemplate>
<FooterTemplate><asp:TextBox ID="...." runat="server" Columns="20" MaxLength="14" /></FooterTemplate>
</asp:TemplateField>
click --- > ShowFooter
DataRow dr = ds.Tables[0].NewRow();
dr[0] = "0";
dr[1] = "";
dr[2] = "";
dr[3] = "";
ds.Tables[0].Rows.InsertAt(dr, 0);
Gridview1.DataSource = ds;
Gridview1.DataBind();
privite DataSet GetData()
{
string sql = "select * from PLAN_DETAIL where TrainingNo='" + strTrainNo + "'order by StartDate,StartTime";
SqlDataAdapter adp = new SqlDataAdapter (sql, connetString);
DataSet ds = new DataSet();
adp.Fill(ds);
return ds;
}
//绑定函数
private void BindData(DataSet ds)
{
myCourseView.DataSourt=ds;
CourseView.DataBind();
}
//add方法
private void AddRow()
{
SaveGridview()//方法自己写,添加之前保存已经添加的行
DataSet ds = GetData();
DataRow row = ds.Table[0].NewRow();
//row[""] = "";给需要初始化值的列赋值.
BindData(ds);
}
思路就是这样的,我直接在网页上写的,楼主可以自己修改下