场景:我页面上有两个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();
}
答案 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();
}