2012-11-16 123 views
1

我有一个页面列出了一堆数据网格中的项目。C#OnCommand呼叫警告框

每个项目有一个cooresponding remove link button,它从列表中删除项目。在我的事件处理程序中 - 该项目被删除 - 我做一个检查,看看该项目是否是列表中的最后一个项目。如果它是最后一个项目,我不做删除,但发送一个警告框告诉用户该项目不能被删除。我不确定如何让C#触发此警报框。

我的代码如下所示:

在我的aspx,我有不同的链接按钮一个DataGrid。如图所示的代码片段:

<ItemTemplate> 
    <asp:LinkButton runat="server" ID="Remove" 
       OnCommand="lnkRemove_Command" CommandArgument='<%# Eval("Id") %> 
       OnClientClick="return false;"> 
    </asp:LinkButton> 
</ItemTemplate> 

在我后面的代码,我的事件处理程序看起来像这样:

private List<MyItem> _items; 

    protected void lnkRemove_Command(object sender, CommandEventArgs e) 
    { 
     int ID = Convert.ToInt32(e.CommandArgument); 
     MyItem item = MyItem.GetItemByID(id); //This gets the item cooresponding to the ID 
     if (_items.Count != 1) 
     { 
      //code to delete item 
     } 
     else 
     { 
      //Generate an alert box to tell the user that this item cannot be deleted. 
      //I have tried the following two lines of commented code, which didn't work for me 
      //Response.Write(@"<script language='javascript'>alert('HERE');</script>"); 
      //Page.ClientScript.RegisterStartupScript(this.GetType(), "hwa", "alert('Hello World');", true); 

     } 
    } 

此外,可能需要注意的是在我Page_Load,我已经做了Context.RegisterResource(this, StyleSheet, Script)。换句话说,我有工作的JavaScript和CSS,与此代码在MyFile.js中的其他功能cooresponds

如果可能,我想在MyFile.js中创建一个JS函数,我已经有js这是由各种OnClientClicks等触发的功能...

是否有可能做这样的事情:

in MyFile.js 

var GetAlertMessage = function() 
{ 
    alert("Can't delete this item"); 
} 

,并呼吁在我上面列出我的C#功能这个功能呢?

在此先感谢您的帮助。

+0

如何在原有的数据绑定,你隐藏删除LinkBut​​ton的最后一个元素...然后没问题! – MikeSmithDev

+0

由于用户可能还会将其他项目添加到列表中,因此无法工作。 – Rhs

+0

因此,用户可以添加项目而无需发回帖子? – MikeSmithDev

回答

2

你应该像对待任何其他验证程序一样对待它。应该有一个客户端验证功能和一个服务器端验证功能。

客户端上的每个删除,能够项验证

,添加onclick="ValidateDeletion();"class="deleteable-item"

function ValidateDeletion() 
{ 
    var itemCount = $(".deleteable-item").length; 
    if(itemCount == 1) 
    { 
     alert("Sorry, you cant delete this item.") 
     return false; 
    } 
    else 
    { 
     //let it pass through 
    } 

} 
+0

谢谢。创建一个类并检查长度正是我所需要的。极好的解决 – Rhs