属性
public Int64 DetailID
{
get { return bintDetailID; }
set { bintDetailID = value; }
}
myClass的
mainClass obj=new mainClass();
obj.DetailID = int.Parse(e.CommandArgument.ToString());
aspx页面
<asp:Button ID="btnEdit" Text="Edit" CommandArgument='<%#Eval("DetailID") %>'
CausesValidation="false" CommandName="Edit" Visible="false" runat="server" OnCommand="btnEdit_Click"/>
这不是你如何将字符串转换为int?
int.Parse(e.CommandArgument.ToString());
什么错了? PLZ help..thnx
答案 0 :(得分:4)
Int.parse用于转换为32位整数值。根据您的问题
public Int64 DetailID
{
get { return bintDetailID; }
set { bintDetailID = value; }
}
它的64位。
try Int64.parse(e.CommandArgument.ToString());
如果你得到空值检查
(!string.IsNullOrEmpty(e.CommandArgument.ToString())
Int64.parse(e.CommandArgument.ToString());
希望它有效。
由于
答案 1 :(得分:1)
假设您的Button对象不在网格/转发器之类的数据绑定控件中, 如果您尝试使用DetailID属性绑定按钮,请检查以下内容: -
假设您的按钮位于testPage.aspx
,testPage.aspx
的代码隐藏类即class testPage
应具有名为DetailID的Int64
类型的属性。
例如:Int64 DetailID get; set;
假设mainClass是您的一些自定义类,在Page_Load中的某个位置,您必须执行this.DetailID = mainClassObject.DetailID;
,其中this
=您的网页实例。
另外,在page_load
方法中,您必须执行Page.DataBind()
。这是因为像按钮这样的非数据绑定控件没有自己的DataBind()方法。
注1:如果你的testPage.DetailID = Int32 / int,你需要在setter方法中或之前进行转换,因为y0ur mainClass是Int64
注意2:从您的评论中,您似乎在说Int64不存在。这很奇怪! 尝试使用完全限定的名称,例如System.Int64,看看是否有效!
答案 2 :(得分:0)
为了确定,请尝试从代码隐藏中设置CommandArgument
的值...
btnEdit.CommandArgument = DetailID.ToString();
我有一个疑问,就是如果你的.aspx文件中你应该写
CommandArgument='<%=Eval("DetailID") %>'
而不是
CommandArgument='<%#Eval("DetailID") %>'
(请注意=
vs #
)