ASP.NET 사이트에서 gridview가 있습니다.ASP.NET 동적 체크 박스 또는 드롭 다운리스트
는 잘 작동 지금 TemplateField을있다 -이 설문 조사 양식이며, 기본 질문으로 사용하여 텍스트 상자를 응답합니다 :
<asp:TemplateField HeaderText="" Visible="True" >
<ItemTemplate>
<asp:TextBox ID="txtAnswer" Text='<%# Bind("Answer") %>' runat="server"
TextMode="MultiLine" Height="76px" MaxLength="2000" Width="377px">
</asp:TextBox>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtAnswer" Text='<%# Bind("Answer") %>' runat="server"
TextMode="MultiLine" Height="76px" MaxLength="2000" Width="377px">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
요구 사항 지금 dropdownlists 응답 할 수있다 새로운 질문을 추가하는 것입니다. 나는 이것을하는 방법에 대한 아이디어를 가지고있다. (질문 번호를 함수에 전달하고 다른 테이블에 저장된 드롭 다운 응답의 존재 여부를 확인한다.)하지만 질문 유형에 따라 templatefield를 동적으로 업데이트하는 데 어려움을 겪고있다. ... 어떤 제안이라도?
UPDATE 나는이 부분적으로 도우미 기능을 통해 작업을 얻을 수 있었다. (아마도 내 최선의 코드는 아니지만 거의 완료되고있다.) 문제는 실제 컨트롤 (Textboxes 또는 dropdownlists) 대신 출력에 내 타입을 알려주는 문자열을 얻는 것입니다. 어떻게 수정할 수 있습니까? ?
public Control GetAnswerControl(string QuestionID, string Answer)
{
List<ListItem> lstOptions = new List<ListItem>();
SqlCommand cmd = new SqlCommand("pDropDownAnswers_Get", functions.NewSupplierRequest);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@QuestionID", SqlDbType.Int);
cmd.Parameters["@QuestionID"].Value = Int32.Parse(QuestionID);
try
{
functions.NewSupplierRequest.Open();
SqlDataReader r = cmd.ExecuteReader();
while (r.Read())
{
lstOptions.Add(new ListItem(r["DropDownAnswer"].ToString(), r["DropDownAnswer"].ToString()));
}
}
catch (Exception err)
{
this.lblError.Text = err.Message;
}
finally
{
functions.NewSupplierRequest.Close();
}
if (lstOptions.Count == 0)
{
TextBox tb = new TextBox();
tb.ID = "txtAnswer";
tb.Text = Answer;
tb.TextMode = TextBoxMode.MultiLine;
tb.Height = 76;
tb.Width = 377;
tb.MaxLength = 2000;
return tb;
}
else
{
DropDownList dl = new DropDownList();
dl.DataSource = lstOptions;
dl.DataBind();
dl.SelectedValue = Answer;
return dl;
}
}
자바 스크립트를 사용하고 계십니까? – Smoore
지금은 아니요 ... 그냥 바로 ASP.NET 코드입니다. – Tim