Ada banyak contoh yang baik dari memperbarui daftar kustom melalui SDK. Di sini adalah lain.
Masalah bisnis: Bentuk InfoPath telah dirancang yang memungkinkan pengguna untuk memasukkan online membeli requisitions. PO permintaan nomor harus tradisional urutan berdasarkan nilai-nilai integer dan dihitung secara otomatis.
Solusi bisnis: Membuat daftar MOSS kustom yang mengandung dua kolom: "ControlField" dan "ControlValue". Nilai kolom berisi nomor permintaan pembelian berikutnya. Perhatikan bahwa generik "kontrol" Konvensi penamaan menyediakan untuk mengendalikan masa depan bidang yang dapat digunakan sebagai diperlukan.
Solusi teknis: Membuat layanan web diakses oleh klien InfoPath. Layanan web kembali kembali nomor permintaan pembelian berikutnya dan update nilai dari daftar.
Pelajaran:
- Ketika menambahkan ini layanan web sebagai sumber data untuk bentuk InfoPath, Saya merasa perlu untuk mengubahnya menjadi udc dan menyimpannya ke Perpustakaan sambungan data.
- Saya juga merasa perlu untuk mengaktifkan skrip lintas domain melalui layanan pusat administrasi // aplikasi manajemen // bentuk konfigurasi server.
- Pertama kalinya bentuk mencoba untuk mengakses layanan web, Butuh waktu dan kadang-kadang, itu akan waktu. Saya fiddled dengan pengaturan dalam bentuk konfigurasi server untuk memperluas pengaturan timeout dan yang tampak untuk membantu.
Kode:
menggunakan Sistem;
menggunakan System.Web;
menggunakan System.Web.Services;
menggunakan System.Web.Services.Protocols;
menggunakan Microsoft.SharePoint;
menggunakan System.Configuration;
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
Umum kelas PoService : System.Web.Services.WebService
{
Umum PoService () {
//Tanda komentar baris berikut jika menggunakan dirancang komponen
//InitializeComponent();
}
/// <Ringkasan>
/// Mendapatkan nomor PO berikutnya dari po nomor kontrol daftar sharepoint.
/// Kenaikan PO nomor dalam daftar itu.
/// </Ringkasan>
/// <kembali></kembali>
[WebMethod]
Umum string GetNextPoNumber()
{
string SpPoControlSiteName; // Nama sebenarnya MOSS situs yang host daftar kontrol PO.
string SpPoControlListName; // Nama daftar MOSS yang sebenarnya yang berisi kontrol Po.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
string nextPoReqNumber = "xyzzy";
menggunakan (SPSite situs = baru SPSite(SpPoControlSiteName))
{
menggunakan (SPWeb Web = site. OpenWeb())
{
SPList currentList = web. Daftar[SpPoControlListName];
foreach (SPItem controlItem dalam currentList.Items)
{
Jika (((string)controlItem["ControlField"]).Sama dengan("NextPoNumber"))
{
nextPoReqNumber = (string)controlItem["ControlValue"];
Int int_nextPoReqNumber;
int_nextPoReqNumber = Mengkonversi.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // Mencari, membaca dan memperbarui nomor PO dalam daftar.
} // menggunakan spweb web = site.openweb()
} // menggunakan spsite site = new spsite("http://localhost/mizuho")
kembali nextPoReqNumber;
}
}