如何从代码后面访问按钮

时间:2017-08-28 06:11:56

标签: c# asp.net button gridview

如何使用ID" btnAutocomplete"?

从后面的代码访问该按钮
    <asp:GridView DataKeyNames="AutocompleteSchoolChild_Child" Width="1500px" CssClass="table table-bordered" OnDataBound="GridAutocomplete_OnDataBound" 
    ID="GridAutocomplete" runat="server" AutoGenerateColumns="false" AllowPaging="true" DataSourceID="sqlAutocomplete" Visible="true" PageSize="10" 
    OnSelectedIndexChanged="GridAutocomplete_OnSelectedIndexChanged">
     <Columns>
       <asp:TemplateField ItemStyle-HorizontalAlign="Center" ItemStyle-width="80px">
           <ItemTemplate runat="server">
               <asp:Button CssClass="btn btn-default" runat="server" ID="btnAutocomplete" Text="Зачислить" CommandName="Select"/>
           </ItemTemplate>
       </asp:TemplateField>
        ...

3 个答案:

答案 0 :(得分:0)

为什么不简单地使用GetElementById javascript方法

document.getElementById("btnAutocomplete").innherHTML("");

或jQuery:

("#btnAutocomplete").val = "";

当您询问如何使用此功能时,我建议您在HTML或您在问题中编写的aspx布局代码之后添加以下代码。

<script type="text/javascript">

    //this function runs when the webpage is loaded
    $(document).ready(function ()
    {
        document.getElementById("btnAutocomplete").innherHTML("whatever you want here");
        //OR
        ("#btnAutocomplete").attr("style","whatever style html you want here");
    });

    //OR declare a private function which you can call through a click event
    function buttonchange()
    {
        ("#btnAutocomplete").val = "whatever value you want to give it";
    }

</script>

您可以将私有函数的调用事件分配给某个html元素,例如:

<button type="button" class="btn" onclick="buttonchange()">Button changer</button>

答案 1 :(得分:0)

我认为您可以为gridview定义OnRowCommand并定义按钮的命令名称,请参阅:

  <asp:GridView DataKeyNames="AutocompleteSchoolChild_Child" Width="1500px" CssClass="table table-bordered" OnDataBound="GridAutocomplete_OnDataBound" 
ID="GridAutocomplete" runat="server" AutoGenerateColumns="false" AllowPaging="true" DataSourceID="sqlAutocomplete" Visible="true" PageSize="10" 
OnSelectedIndexChanged="GridAutocomplete_OnSelectedIndexChanged"
 OnRowCommand="GridAutocomplete_RowCommand">
 <Columns>
   <asp:TemplateField ItemStyle-HorizontalAlign="Center" ItemStyle-width="80px">
       <ItemTemplate runat="server">
           <asp:Button CssClass="btn btn-default" runat="server" ID="btnAutocomplete" Text="Зачислить" CommandName="Select"/>
       </ItemTemplate>
   </asp:TemplateField>

并在代码背后:

protected void grdSms_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.ToLower() == "select")
   {
     //do something
   }

}

答案 2 :(得分:0)

我假设您要更改当前所选行中的按钮文字,因此您需要将FindControlGridViewRow实例&amp;将其转换为Button控件:

protected void GridAutocomplete_OnSelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow row = GridAutocomplete.SelectedRow;
    Button btnAutocomplete = (Button)row.FindControl("btnAutocomplete");

    btnAutocomplete.Text = "Insert"; // example to use button property
}

如果要更改所有GridView行中的按钮文本,可以在同一事件处理程序中将foreach循环与GridViewRow实例一起使用:

foreach (GridViewRow row in GridAutocomplete.Rows)
{
    if (row.RowType == DataControlRowType.DataRow)
    {
        Button btnAutocomplete = (Button)row.FindControl("btnAutocomplete");
        btnAutocomplete.Text = "Insert"; // example to use button text property
    }
}

如果您不确定FindControl投射是否正常,请将所有直接投射更改为as运算符&amp;像这样使用null检查:

GridViewRow row = (sender as GridView).NamingContainer as GridViewRow;
Button btnAutocomplete = row.FindControl("btnAutocomplete") as Button;
if (btnAutocomplete != null)
{
    btnAutocomplete.Text = "Insert"; // example to use button text property
}

注意:此处的目标是在访问GridViewRow内的按钮控件之前首先获取TemplateField实例,以便SelectedRow是获取当前所选行的正确方法。