Проблема с привязкой данных - PullRequest
0 голосов
/ 28 сентября 2010

У меня есть элемент управления DataList следующим образом

<asp:DataList ID="DataList1" runat="server" DataKeyField="FruitID"  RepeatColumns="2" Width="387px">
<ItemTemplate>
    <asp:Image ID="Image1" runat="server" Height="104px" ImageUrl='<%# Eval("ImageUrl") %>' Width="135px" />
    <br />
    Item ID:
    <asp:Label ID="lblItemID" runat="server" Text='<%# Eval("FruitID") %>' />
    <br />
    FruitName:
    <asp:Label ID="lblFruitNameLabel" runat="server" Text='<%# Eval("FruitName") %>' />
    <br />
    UnitPrice:
    <asp:Label ID="lblUnitPriceLabel" runat="server" Text='<%# Eval("UnitPrice") %>' />
    <br />
    Quantity:
    <asp:TextBox ID="txtQuantity" runat="server"></asp:TextBox>
    <br />
    <br />
</ItemTemplate>
</asp:DataList>
<asp:Button ID="btnAddtoCart" runat="server" onclick="Button1_Click"  Text="Add to Cart" />

, и в коде позади него я использую следующий код для получения значений элементов управления внутри элемента управления DataList

int id = int.Parse(((Label)DataList1.Controls[0].FindControl("lblItemID")).Text.ToString());
string Name = ((Label)DataList1.Controls[0].FindControl("lblFruitNameLabel")).Text;
double Price = double.Parse(((Label)DataList1.Controls[0].FindControl("lblUnitPriceLabel")).Text.ToString());
int Quantity = int.Parse(((TextBox)DataList1.Controls[0].FindControl("txtQuantity")).Text.ToString());
string Url = ((Image)DataList1.Controls[0].FindControl("Image1")).ImageUrl;

Iполучаю следующее исключение

Неправильный формат входной строки.

Исключительная ситуация в следующей строке

int Quantity = int.Parse(((TextBox)DataList1.Controls[0].FindControl("txtQuantity")).Text.ToString());

I 'я очень уверен, что я ввожу целочисленное значение в текстовое поле:)

я что-то упустил?

Ответы [ 4 ]

0 голосов
/ 28 сентября 2010
<br />
Quantity :
<asp:TextBox ID="txtQuantity" runat="server"></asp:TextBox>
<br />

Я видел, что вы не связываетесь с txtQuantity. И Convert.ToInt32 дает исключение, потому что это пустая строка. я так думаю

0 голосов
/ 28 сентября 2010

Это может быть связано с проблемой приведения типа, от введенного вами числа к целому числу.Попробуйте вместо этого сделать его длинным типом данных, а также убедитесь, что между введенной строкой нет символов.

0 голосов
/ 28 сентября 2010

попробуйте

int Quantity =Convert.ToInt32(((TextBox)DataList1.Controls[0].FindControl("txtQuantity")).Text.ToString());
0 голосов
/ 28 сентября 2010

Может быть, было бы замечательно, если бы вы немного переписали свой код для этого

var myQuantity = ((TextBox)DataList1.Controls[0].FindControl("txtQuantity")).Text.ToString();
int Quantity = int.Parse(myQuantity);

и проверьте с помощью отладчика, какой тип myQuantity. Это должно помочь вам найти вашу проблему.

...