当我使用
时
protected void GenGridView()
{
var data = project.ObtainDataDescJSON();
Title = "show";
for (int rowCtr = 0; row < data.Num.Count; row++)
{
var buttonField = new ButtonField
{
ButtonType = ButtonType.Button,
Text = "Show",
CommandName = "Display"
};
buttonField.Attributes.Add("data-toggle", "modal");
buttonField.Attributes.Add("data-target", "#myModal");
buttonField.CssClass = "btn btn-info";
ModelNumFieldsGrid.Columns.Add(buttonField);
break;
}
}
在C#中定义按钮我得到错误说没有扩展属性而且没有扩展名cssClass。
我试过
[AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
public sealed class ExtensionAttribute : Attribute
和
using System.Runtime.CompilerServices.ExtensionAttribute;
但不起作用。我该怎么解决呢?
我的确切错误
Error 2 'System.Web.UI.WebControls.ButtonField' does not contain a definition for 'Attributes' and no extension method 'Attributes' accepting a first argument of type 'System.Web.UI.WebControls.ButtonField' could be found (are you missing a using directive or an assembly reference?) C:\Users\s0\Documents\Visual Studio 2013\WebSites\Model.aspx.cs 55 25 Pred
Error 7 'System.Web.UI.WebControls.ButtonField' does not contain a definition for 'CssClass' and no extension method 'CssClass' accepting a first argument of type 'System.Web.UI.WebControls.ButtonField' could be found (are you missing a using directive or an assembly reference?) C:\Users\s06\Documents\Visual Studio 2013\WebSites\Model.aspx.cs 74 25 Pred
答案 0 :(得分:0)
C#中的扩展方法允许您声明可以调用的方法,就像它们是类的方法一样:
public class Button { }
public static class ButtonExtensions
{
public static int GetArea(this Button button)
{
return button.Width * button.Height;
}
}
使用此扩展方法,您可以调用:
Button b = new Button();
int area = b.GetArea();
删除扩展方法后,会出现错误消息
&#39;按钮&#39;不包含
GetArea
的定义,也没有可以找到接受类型GetArea
的第一个参数的扩展方法Button
现在可能从来没有一个扩展方法Attributes
或CssClass
,但是编译器猜测它曾经存在过一次,可能是因为大多数程序员都胜出了当IntelliSense没有获取成员名称时尝试编译。
简而言之:编译器告诉您ButtonField
没有这些成员。
答案 1 :(得分:0)
确实System.Web.UI.WebControls.ButtonField不包含名为CssClass的属性,您可以通过以下方式设置类:
buttonField.ControlStyle.CssClass
此外,如果您需要向ButtonField添加自定义属性,则需要在网格的事件RowDataBound中执行此操作。