El Dev Ответов: 2

Не удается привести объект типа 'System.Веб.Пользовательского интерфейса.WebControls.Система текстового поля' тип '.Веб.Пользовательского интерфейса.WebControls.Этикетка".


Привет,есть ли что-нибудь, чтобы получить boundField в ярлык...
Я использую этот код, чтобы получить связанную строку в текстовое поле, и я также хочу получить то же самое в метку, но я получаю ошибку.
Это мой код.:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="CustomerID" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
                <Columns>
                    <asp:BoundField DataField="CompanyName" HeaderText="Company Name" />
                    <asp:BoundField DataField="Address" HeaderText="Sddress" />
                    <asp:BoundField DataField="City" HeaderText="City" />
                    <asp:BoundField DataField="PostalCode" HeaderText="PostalCode" />
                    <asp:BoundField DataField="Country" HeaderText="Country" />
                    <asp:CommandField ShowEditButton="true" />
                    <asp:CommandField ShowDeleteButton="true" />
                </Columns>
            </asp:GridView>


а это код c# :

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            int Customerid = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());
            GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
            Label lblID = (Label)row.FindControl("lblID");
            TextBox textCompanyName = (TextBox)row.Cells[0].Controls[0];
            TextBox textAddress = (TextBox)row.Cells[1].Controls[0];
            TextBox textCity = (TextBox)row.Cells[2].Controls[0];
            TextBox textPostalCode = (TextBox)row.Cells[2].Controls[0];
            //string country = row.Cells[4].Text;
            Label lblCountry = (Label)row.Cells[4].Controls[0];
...
}

Я получаю сообщение об ошибке ОНТ этой линии:
Label lblCountry = (Label)row.Cells[4].Controls[0];
Any help

Thanks7872

где находится метка в вашем gridview? а где текстовое поле?

El Dev

Мне они не нужны в GridView я могу создать код in позади вот так
TextBox textCompanyName = (текстовое поле)строка.Ячейки[0].Регулирование[0];
и это прекрасно работает, но когда я использую эту строку Label lblCountry = (Label).Клетки[4].Управление[0]; оно не работает...

2 Ответов

Рейтинг:
11

Zafar Sultan

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

Попробуйте заменить

Label lblCountry = (Label)row.Cells[4].Controls[0];

с
TextBox lblCountry = (TextBox )row.Cells[4].Controls[0];

Тогда вы можете иметь что-то вроде:
Label myLabel = new Label();
myLabel.Text = lblCountry.Text.Trim(); 


El Dev

Спасибо!

Zafar Sultan

Добро пожаловать.

Рейтинг:
1

pramod.hegde

Ошибка ясно говорит вам, что вы не можете преобразовать объект типа A в объект типа B.
TextBox и Label-это два разных элемента управления. Вы вводите текстовое поле в качестве метки, и в этом случае ошибка очевидна.
Если вы хотите получить значение textbox и применить его к метке, то вам поможет следующий код.

var textBoxObj = (TextBox)row.Cells[4].Controls[0];
Label lblCountry = new Label(){ Text = textBoxObj.Text };