我必须在gridview标题中添加一个跨越两列的按钮。我在后面的代码中执行此操作:
if (e.Row.RowType == DataControlRowType.Header)
{
GridView HeaderGrid = (GridView)sender;
GridViewRow HeaderGridRow =
new GridViewRow(0, 0, DataControlRowType.Header,
DataControlRowState.Insert);
TableCell HeaderCell = new TableCell();
HeaderCell.Text = "Name of Person";
HeaderCell.Font.Bold = true;
HeaderCell.ColumnSpan = 1;
HeaderGridRow.Cells.Add(HeaderCell);
HeaderCell = new TableCell();
Button btnHeader = new Button();
btnHeader.UseSubmitBehavior = false;
btnHeader.Click += new EventHandler(this.btnsubmitentry_Click);
btnHeader.Text = "Add New Task";
btnHeader.CommandName = "AddNewTask";
// OnClick="btnsubmitentry_Click"
btnHeader.CssClass = "btn btn-lg btn-default";
btnHeader.OnClientClick = "AddNewTask();";
HeaderCell.Controls.Add(btnHeader);
HeaderCell.ColumnSpan = 2;
HeaderGridRow.Cells.Add(HeaderCell);
grdViewSummary.Controls[0].Controls.AddAt(0, HeaderGridRow);
}
这会生成一个很好的按钮,但我需要帮助如何调用服务器端按钮单击事件。
<input type="button" name="grdViewSummary$ctl01$ctl00" value="Add New Task" onclick="AddNewTask();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("grdViewSummary$ctl01$ctl00", "", true, "", "", false, true))" class="btn btn-lg btn-default" />
正如您所看到的,我将onClientClick传递给具有回发代码的javascript函数,但事件未被触发。
<script type="text/javascript">
function AddNewTask() {
alert();
__doPostBack('btnsubmitentry_Click','')
}
</script>
我也试过传递eventhandler和CommandName。但是这些按钮的视图源中都没有显示这些内容。 任何方法我都会好的;在javascript函数上调用回发,或者直接调用服务器端单击例程,或者调用commandname grdiview函数。
答案 0 :(得分:1)
模板字段还包含可以保存控件的页眉和页脚模板区域
<asp:TemplateField HeaderText="Name Of Person" SortExpression="parent">
<HeaderTemplate>
<asp:Button ID="btnHeader" runat="server"
OnClientClick="AddNewTask()" <-- this is not needed see update below
CommandName="AddNewTask"
CssClass="btn btn-lg btn-default"
Text="Add New Task"
UseSubmitBehavior="false" />
</HeaderTemplate>
<HeaderStyle Font-Bold="true" />
<EditItemTemplate>
<asp:TextBox ID="" runat="server" Text='<%# Bind(...)%>' ></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="" runat="server" Text='<%# Bind(...)%>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:TemplateField>
<强>更新强>
现在因为按钮位于标题中,它自动连接到gridview,然后单击将触发可以在GridView RowCommand事件中捕获的RowCommand。处理CommandName并在后面的代码中调用所需的函数