需要格式异常的帮助::输入字符串的格式不正确

时间:2010-10-18 05:52:17

标签: c# asp.net

我的mainClass中的

属性

  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

3 个答案:

答案 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属性绑定按钮,请检查以下内容: -

  1. 假设您的按钮位于testPage.aspxtestPage.aspx的代码隐藏类即class testPage应具有名为DetailID的Int64类型的属性。 例如:Int64 DetailID get; set;

  2. 假设mainClass是您的一些自定义类,在Page_Load中的某个位置,您必须执行this.DetailID = mainClassObject.DetailID;,其中this =您的网页实例。

  3. 另外,在page_load方法中,您必须执行Page.DataBind()。这是因为像按钮这样的非数据绑定控件没有自己的DataBind()方法。

  4. 注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 #