2009-06-30 6 views
0

私はaspグリッドで自分のチェックボックスの値を更新するのが好きです。IDをカスタム属性としてグリッドのチェックボックスに手動で入力してください。

私はチェックボックスにIDをバインドする(しかし、どのように?)とチェックボックスをクリックしてコードの後ろにコードの更新を発生すると思った。

IDを取得するにはどうしたらいいですか?このIDをバインドしてイベントのコードの後ろに置く必要があるのはどこですか?

ありがとうございました

答えて

0

ここに私がしたことがあります。 (これはもっと簡単な方法でなければならないことに注意してください。私はASP.NETの新機能です)

ここでは、GridFieldにTemplateFieldがあります。その中にはUpdatePanelがあり、CheckBoxがその内部にあります。これは、TextBoxのチェックをbackgroung(ajax)にポストさせるために行われます。あなたはそれを必要としないかもしれません(UpdatePanel)。

<asp:TemplateField HeaderText="Private" SortExpression="IsPrivate"> 
    <ItemTemplate> 
    <asp:UpdatePanel ID="upIsPrivate" runat="server" UpdateMode="Always" ChildrenAsTriggers="true"> 
     <ContentTemplate> 
     <asp:CheckBox ID="chkIsPrivate" runat="server" OnCheckedChanged="chkIsPrivate_CheckedChanged" AutoPostBack="true" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    </ItemTemplate> 
</asp:TemplateField> 

これはこれを処理する方法です。私はチェックボックスが含まれていGridViewRowからIDを取得していることに注意してください:

GridViewRow row = (GridViewRow)((CheckBox)sender).Parent.Parent.Parent.Parent;

protected void chkIsPrivate_CheckedChanged(object sender, EventArgs e) 
{ 
    if (editMode) 
    { 
    GridViewRow row = (GridViewRow)((CheckBox)sender).Parent.Parent.Parent.Parent; 
    Int32 id = (Int32)uxPhoneCallList.DataKeys[row.RowIndex]["Id"]; 
    CheckBox isPrivate = (CheckBox)row.FindControl("chkIsPrivate"); 

    PhoneCall phoneCall = PhoneCallManager.GetById(id); 
    ... 
    } 
} 
関連する問題