从page_load函数调用Item_command事件

时间:2014-05-25 19:06:18

标签: c# asp.net

场景:我页面上有两个div div1包含datalist(datalist1),div2包含在data-list事件中填充的控件。

问题:我想在page_Load上为datalist1的第一个元素调用item_command事件。 我怎么能这样做以及我应该将哪些参数传递给item_command事件?

item_command事件:

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{

      DataList1.SelectedIndex = e.Item.ItemIndex;

                if (e.CommandName.Equals("MID"))
                {
         AnswerId = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex].ToString());// a global variable

                    DataClasses1DataContext db = new DataClasses1DataContext();
                    var memos = (from m in db.Memos
                                 where m.memoId == AnswerId
                                 select m).First();


                       legendtitle.InnerText = memos.title.ToString();


                    TextBox2.Text = memos.description.ToString();        
}

2 个答案:

答案 0 :(得分:0)

如果您的事件处理程序包含您希望独立于事件触发运行的代码,请重构该方法以将该代码移除到单独的方法。 (设置AnswerId后可能是一切。)然后你可以调用那个单独的方法,而不会伪造事件参数。

答案 1 :(得分:0)

尝试这样:

在page_load上调用此方法

BindingMethod(0);            //for 1st selection

并在DataList1_ItemCommand中作为

BindingMethod(e.Item.ItemIndex); 

并声明方法如下

public void BindingMethod(int index)

{
 DataList1.SelectedIndex = index;

            if (e.CommandName.Equals("MID"))
            {
     AnswerId = Convert.ToInt32(DataList1.DataKeys[index].ToString());// a global variable

                DataClasses1DataContext db = new DataClasses1DataContext();
                var memos = (from m in db.Memos
                             where m.memoId == AnswerId
                             select m).First();


                   legendtitle.InnerText = memos.title.ToString();


                TextBox2.Text = memos.description.ToString(); 


}