ошибка при создании оповещения при нажатии кнопки / ссылки удаления в виде сетки - PullRequest
3 голосов
/ 03 апреля 2012

Моя цель - создать предупреждающее сообщение, когда я пытаюсь нажать кнопку удаления в сетке.Я использую asp.net C #.Когда я пытаюсь запустить свою программу, я сталкиваюсь с этой ошибкой:

Ошибка компиляции Описание: во время компиляции ресурса, необходимого для обслуживания этого запроса, произошла ошибка.Пожалуйста, просмотрите следующие конкретные подробности ошибки и измените свой исходный код соответствующим образом.

Сообщение об ошибке компилятора: CS0039: Невозможно преобразовать тип 'System.Web.UI.WebControls.TableCell' в 'System.Web.UI.WebControls.ImageButton' через преобразование ссылок, преобразование в бокс, преобразование в почтовый ящик, преобразование в оболочкупреобразование или преобразование нулевого типа

Ошибка источника:

Строка 211: // если у вас есть ссылки (не изображения) в качестве кнопки команды.Строка 212: // LinkButton button = ячейка как ImageButton;Строка 213: кнопка ImageButton = управление как ImageButton; Строка 214: if (button! = Null && button.CommandName == "Удалить") Строка 215: // Добавить подтверждение удаления


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // loop all data rows
        foreach (DataControlFieldCell cell in e.Row.Cells)
        {
            // check all cells in one row
            foreach (Control control in cell.Controls)
            { 
                // Must use LinkButton here instead of ImageButton
                // if you are having Links (not images) as the command button.
                //LinkButton button = cell as ImageButton;
                ImageButton button = control as ImageButton;
                if (button != null && button.CommandName == "Delete")
                    // Add delete confirmation
                    button.OnClientClick = "if (!confirm('Are you sure " +
                           "you want to delete this record?')) return;";
            }
        }
    }

}

Привет, Педро, я не знаком с программированием с использованием asp.net C #, поэтому у меня возникли трудности с завершением моего проекта.Я использую Visual Studio 2008 ... Ниже:

<asp:TemplateField>              
<ItemTemplate>                  
<asp:LinkButton ID="lnkRemove" runat="server"  CommandArgument="<%# Eval("somethingthatidentifiesRow")%>"                      
OnClientClick="return confirm('Do you want to delete?')" Text="Delete"                       
OnClick="DeleteFunction">
</asp:LinkButton>              
</ItemTemplate>         
</asp:TemplateField>     

Могу ли я узнать, что я должен поместить в мой файл .aspx.cs.Спасибо

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{ 


}

Спасибо Педро..им почти на моем пути, чтобы получить это ... но еще 1 вопрос .. что я должен здесь поставить -> "SomethatidentifiesRow"?Спасибо

<asp:LinkButton ID="lnkRemove" runat="server"  CommandArgument="<%# Eval("somethingthatidentifiesRow")%>" 

Ответы [ 3 ]

1 голос
/ 03 апреля 2012

Может быть проще сделать это из .aspx

       <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="lnkRemove" runat="server" 
                    CommandArgument='<%# Eval("somethingthatidentifiesRow")%>'
                    OnClientClick="return confirm('Do you want to delete?')" Text="Delete" 
                    OnClick="DeleteFunction"></asp:LinkButton>
            </ItemTemplate>
       <asp:TemplateField>

On .asx.cs

Вам понадобится следующее:

public void DeleteFunction(object sender, EventArgs e)
{
    string argumentthatidentifiesRowCell = ((LinkButton)sender).CommandArgument;
    //do your thing to remove
}
1 голос
/ 03 апреля 2012

Снова проверьте ошибку, касающуюся преобразования элемента. Она говорит, что вы не можете преобразовать элемент tablecell в элемент imagebutton, поэтому вы неправильно разговариваете с ним, чтобы правильно найти нужный элемент, а затем, как я объяснил ниже.

Вам нужно проверить, задан ли элемент управления ImageButton или нет, если нет, то вам нужно выделить другой элемент управления для eampl e

foreach (Control control in cell.Controls) 
{ 
  if(control is ImageButton)
  {
   ImageButton button = control as ImageButton; 
    //you code to atttach javascript with button
  }
  else
    continue;
}

или другой способ - найти управление по id элемента в вашей ячейке, а не зацикливаться

ImageButton btn = cell.FindControl("id_of_imagebutton") as ImageButton;
if(btn!=null)
{
  //you code to atttach javascript with button

}
0 голосов
/ 05 апреля 2012

Попробуйте что-то вроде этого

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow) {
        // loop all data rows
        foreach (DataControlFieldCell cell in e.Row.Cells) {
            // check all cells in one row
            foreach (Control control in cell.Controls) {
                // Must use LinkButton here instead of ImageButton
                // if you are having Links (not images) as the command button.
                ImageButton button = control as ImageButton;
                if (button != null && button.CommandName == "Delete") {
                    // Add delete confirmation
                    button.OnClientClick = "if (!confirm('Are You Sure to Delete this Vehicle ?')) return;";
                }
            }
        }
    }
}

И в виде сетки что-то вроде этого

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" OnRowDataBound="GridView_RowDataBound"
                        AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None"
                        BorderWidth="1px" CellPadding="3" DataKeyNames="DEVICEID" DataSourceID="SqlDataSource1"
                        Font-Names="Arial" Font-Size="Smaller" HorizontalAlign="Center" PageSize="50"
                        Width="100%" EmptyDataText="No Vehicles Found Against the Selected Zone">
                        <RowStyle ForeColor="#000066" />
                        <Columns>
                            <asp:CommandField ShowEditButton=True    
                DeleteImageUrl="~/Images/del.jpg" DeleteText="Delete Record" ButtonType="Image" CancelImageUrl="~/Images/cancel.png" EditImageUrl="~/Images/edit.png" UpdateImageUrl="~/Images/tick.png">
                                <ItemStyle Font-Size="8pt" Width="30px" Wrap="False" />
        </asp:CommandField>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...