2012-11-16 3 views
1

DataGrid의 항목 목록이있는 페이지가 있습니다.C# OnCommand Call Alert Box

각 항목은 해당 항목을 목록에서 제거하는 해당 remove link button을가집니다. 항목이 삭제 된 내 이벤트 처리기에서 항목이 목록의 마지막 항목인지 확인합니다. 마지막 항목 인 경우 삭제를 수행하지 않지만 항목을 삭제할 수 없다는 경고 상자를 사용자에게 보냅니다. C#에서이 경고 상자를 트리거하는 방법을 확신 할 수 없습니다.

내 코드는 다음과 같습니다

내 영문에서

, 나는 다양한 링크 버튼과 데이터 그리드 있습니다. 그림과 같이 코드의 코드 조각 : 내 코드에서

<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). 다시 말해, MyFile.js에서이 페이지의 다른 기능에 대해이 코드와 함께 사용하는 JavaScript 및 CSS를 사용하고 있습니다.

가능하면 JSF가 이미있는 MyFile.js에서 JS 함수를 만들고 싶습니다.

in MyFile.js 

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

을 나는 위 내 C# 기능이 함수를 호출 등 다양한 OnClientClicks에 의해 트리거되는 기능 ...

는이 같은 일을 할 수 있습니까?

도움을 미리 감사드립니다.

+0

class="deleteable-item" ... 다음을 추가 문제 없어! – MikeSmithDev

+0

그 이유는 사용자가 목록에 추가 항목을 추가 할 수 있기 때문입니다. – Rhs

+0

그래서 사용자는 게시물을 다시하지 않고 항목을 추가 할 수 있습니까? – MikeSmithDev

답변

2

다른 검증 루틴과 마찬가지로 이것을 다루어야합니다. 클라이언트 측 유효성 검사 기능과 서버 측 유효성 검사 기능이 있어야합니다.

클라이언트 측 각 삭제-수있는 항목에 대한 검증

, onclick="ValidateDeletion();" 원래 데이터 바인딩에 대해, 마지막 요소에 대한 삭제하는 LinkButton을 숨기는 방법

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