1

aspx ページでは、次を使用しています。

<asp:GridView ID="grdCreateCustRepoUsers">
  <asp:TemplateField>
    <ItemTemplate>
      <div class="cst_checkbox_container1" id="cs1" runat="server">
        <div class="cst_checkbox unselected">
          <label class="checkbox_value">
          <asp:CheckBox ID="chkRead" runat="server" AutoPostBack="true" OnCheckedChanged="chkRead_CheckChanged" /></label>
        </div>
      </div>
    </ItemTemplate>
   </asp:TemplateField>
 </asp:GridView>

私が使用しているコードビハインドで:

 cs1.Attributes.Add("class", "some-class");

cs1しかし、現在のコンテキストでは終了しないエラーが発生します。

これを解決するにはどうすればよいですか?

4

3 に答える 3

3

cs1DataSourceのすべてのアイテムに対して繰り返されるため、ページで直接利用することはできませんgrdCreateCustRepoUsers GridView

あなたがする必要があるのは、のRowDataBoundイベントの一部としてそれを設定することGridViewです。

C#でMSDNの例を使用する

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
  if(e.Row.RowType == DataControlRowType.DataRow)
  {
     HtmlGenericControl div = (HtmlGenericControl)e.FindControl("cst_checkbox_container1");
     div.Attributes["class"] = "some_class";
  }
}

aspx.csこれはVB.NETにあります(タイトルにあなたが含まれていることに気づかなかったので、最初に書きました)

Sub grdCreateCustRepoUsers_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles grdCreateCustRepoUsers.RowDataBound
  If e.Row.RowType = DataControlRowType.DataRow Then
    Dim div as HtmlGenericControl = e.FindControl("cst_checkbox_container1")
    div.Attributes("class") = "some-class"
  End If
End Sub

(注:コントロールの経験は非常に限られていますGridViewが、これは同様のコントロールの経験に基づいてい<asp:Repeater>ます。したがって、上記のコードはテストされていませんが、正しい方向を示していることを願っています。)

于 2013-02-22T12:09:24.110 に答える
0
protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HtmlContainerControl div = e.Row.FindControl("cs1") as HtmlContainerControl;
        div.Attributes["class"] = "some_class";
    }
}
于 2013-02-22T12:22:59.643 に答える