3

私はasp.netプロジェクトを持っており、C#で作業しています。

私のプロジェクトには、チェックボックスを持つデータバインドされたリストボックスがあります。

ユーザーがチェックボックスをクリックすると、たとえばラベル/テキストボックスが更新されます。

問題は、ポストバックを行うボタンをクリックするまで、ラベル/テキストボックスを更新しないことです。「OnTreeNodeCheckChanged」イベントは、ポストバックがトリガーされた後にのみ発生するように見えるため、チェックボックス変更イベントでポストバックを呼び出すにはどうすればよいですか? これも良い考えですか(チェックボックスが変更されるたびにポストバックを呼び出したい)

--更新されたコード スニペット-- Asp

 <asp:TreeView ID="treevCourses" runat="server" AutoPostBack="true" ShowCheckBoxes="All" Width="100%"
                OnTreeNodeCheckChanged="check_changed" Height="16px" ImageSet="Contacts">

(C#部分にハンドラを入れてみました。) C#

protected void check_changed(object sender, TreeNodeEventArgs e)
        {
        lblTest.Text = "TestText";
        }

(スクリプト部分にも入れてみました)

void check_changed(object sender, EventArgs e)
    {
        lblTest.Text = "TestText";
    }

ツリービューへのデータのバインド (これはボタンのポストバックで発生します)

foreach (DataRow row in ds.Tables[0].Rows)
                {
                    TreeNode node = new TreeNode(row["courseName"].ToString(), row["courseName"].ToString());
                    //  node.PopulateOnDemand = true;
                    treevCourses.Nodes.Add(node);
                }


                //select from topic where parentId = topicId.
                ds = myConClass.returnSqlDataset("select cd.courseName,ct.[date] from courseDetails cd join courseTimes ct on cd.courseId = ct.courseId");

                foreach (TreeNode treenode in treevCourses.Nodes)
                {
                    foreach (DataRow row in ds.Tables[0].Rows)
                    {
                        if (row["courseName"].ToString() == treenode.Value)
                        {
                            TreeNode node = new TreeNode(row["date"].ToString(), row["date"].ToString());
                            treenode.ChildNodes.Add(node);
                        }
                    }       
                }
4

3 に答える 3

10

AutoPostBackTreeView にはプロパティがありません。MSDNによると、サーバーへの投稿間でコントロールTreeNodeCheckChangedのチェック ボックスの状態が変化すると、イベントが発生します。TreeView

このリンクで述べたように、何か他のことをする必要があります

1)ページの読み込み時にクリック属性をTreeView1に追加します

protected void Page_Load(object sender, EventArgs e)
{
     TreeView1.Attributes.Add("onclick", "postBackByObject()");
}

2) Java スクリプト関数を追加し、ポスト バックを実行します。

    <script type="text/javascript">

     function postBackByObject()
     {
         var o = window.event.srcElement;
         if (o.tagName == "INPUT" && o.type == "checkbox")
        {
           __doPostBack("","");
        } 
    }
   </script>

3)。TreeNodeCheckChangedイベントの実施

protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {
            // do stuff
        } 
于 2013-04-11T10:06:09.647 に答える